J'ai donc act_as_taggable qui fonctionne correctement. Je suis en mesure d'ajouter les tags lors de la création d'un nouveau post et je peux voir tous les tags en regardant les messages. Qu'est-ce que Im essayant de faire est de créer un lien de nav pour certaines balises. Par exemple, je veux un lien de nav qui dit "Films" et quand je clique sur ce lien, je veux que tous les messages que j'ai créés qui ont le tag "Films" à montrer. Ceci est mon post_controller.rbLien vers tous les messages avec le même tag, en utilisant acts_as_taggable
def index
@posts = current_author.posts.most_recent
end
def show
end
def new
@post = current_author.posts.new
end
private
def set_post
@post = current_author.posts.friendly.find(params[:id])
end
def post_params
params.require(:post).permit(:title, :body, :description, :banner_image_url, :tag_list)
end
end
end
Mon post.rb qui traite les balises
acts_as_taggable # Alias for acts_as_taggable_on :tags
extend FriendlyId
friendly_id :title, use: :slugged
belongs_to :author
scope :most_recent, -> { order(published_at: :desc) }
scope :published, -> { where(published: true) }
scope :with_tag, -> (tag) { tagged_with(tag) if tag.present? }
scope :list_for, -> (page, tag) do
recent_paginated(page).with_tag(tag)
end
Merci, cela va définitivement dans la bonne direction. Je me demande aussi cela, j'ai déjà mes pages séparées et les liens de configuration pour les balises que je veux utiliser. Donc, j'ai déjà sur mon nav "Films", "TV" et "Musique", ils sont juste des pages vierges lorsque vous cliquez sur eux. Serait-il simplement plus facile de simplement appeler l'étiquette pour cette page spécifique, au lieu de devoir créer un nouvel itinéraire et un nouveau modèle de vues. Ainsi, par exemple, sous Films, il suffit d'avoir un tag d'appel @ posts.tagged_with ("films"). –
Tweaked certaines choses autour de mon code et cela a parfaitement fonctionné. Je vous remercie. –
Vous pouvez utiliser l'itinéraire d'index existant et, dans la méthode du contrôleur, vérifier l'existence d'un paramètre d'étiquette. La méthode link_to devrait passer l'étiquette légèrement différemment, par ex. link_to "Movies", posts_path, {tag: "Films"}. Pourrait être une meilleure solution si vous avez beaucoup de différents tags à lier. – margo