Comment trouver et afficher un groupe d'objets avec une balise spécifique en utilisant agit comme une balise (redux)?
-
06-07-2019 - |
Question
Je souhaite afficher une liste d'articles dans l'affichage de mon tag. J'utilise le plug-in redg tagable dans une application Rails 2.3.2 et SQLite3. J'ai aussi loin que exemple de base me prend, attribue des tags puis en affichant une liste avec l'article.
Je souhaite maintenant afficher une liste d'articles appartenant à une balise, mais l'erreur suivante apparaît:
undefined method `article' for #<Tag id: 1, name: "various", taggings_count: 1>
Modèles
/article.rb
class Article < ActiveRecord::Base
acts_as_taggable
end
/user.rb
class Tag < ActiveRecord::Base
acts_as_tagger
end
Contrôleur
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
Afficher
/tags/show.html.erb
<% for article in @articles %>
...
<% end %>
Voici un lien vers le fichier de migration .
Merci beaucoup.
La solution 3
Un grand merci à Geemus, auteur d’actes en tant que redux étiquetable pour me l’avoir expliqué.
Pour afficher une liste d'articles avec une balise spécifique, il me suffisait de modifier le paramètre tags_controller de:
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
à:
Contrôleur /tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.tagged
end
Autres conseils
Je pense que le plugin n’est pas à blâmer ici, c’est le sqlite qui vous cause des problèmes. J'ai déjà rencontré celui-ci auparavant - il semble que sqlite ne comprenne pas la syntaxe 'nom_table.nom_colonne', même si elle n'est pas mentionnée sur le site Web. Dans mon cas, je viens de passer à MySQL, et tout s'est passé sans problème. Voir si cela aide.
Le problème est que vous avez un modèle nommé Object. Donnez-lui un nom qui ne chevauche pas les classes système Ruby, telles que ApplicationObject ou MediaObject.
Je pourrais spéculer sur les raisons pour lesquelles cela cause les problèmes, mais ce ne serait que spéculation. Les classes ouvertes sont une fonctionnalité merveilleuse de Ruby, mais cela signifie que vous devez nommer vos classes avec soin afin qu'elles soient distinctes des classes de Ruby's et de Rail.