タグ付きとして機能する(redux)を使用して、特定のタグを持つオブジェクトのグループを見つけて表示する方法は?
-
06-07-2019 - |
質問
タグのショービューで記事のリストを表示したい。 Rails 2.3.2およびSQLite3アプリでタグ付け可能なreduxプラグインとして機能を使用しています。 基本的な例でタグを割り当て、記事とともにそれらのリストを表示します。
今、タグに属する記事のリストを表示したいのですが、次のエラーが表示されます:
undefined method `article' for #<Tag id: 1, name: "various", taggings_count: 1>
モデル
/article.rb
class Article < ActiveRecord::Base
acts_as_taggable
end
/user.rb
class Tag < ActiveRecord::Base
acts_as_tagger
end
コントローラー
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
表示
/tags/show.html.erb
<% for article in @articles %>
...
<% end %>
移行ファイルへのリンクです。
どうもありがとう。
解決 3
これを説明してくれたタグ付け可能なリデュースの作者であるGeemusに感謝します。
特定のタグを持つ記事のリストを表示するには、tags_controllerを次のように変更する必要がありました。
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
to:
コントローラー /tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.tagged
end
他のヒント
このプラグインはここで責めるものではないと思います。sqliteが問題を引き起こしています。私は以前にこれに遭遇しました-ウェブサイトで言及されていなくても、sqliteは「table_name.column_name」構文を理解できないようです。私の場合は、MySQLに切り替えただけで、問題はまったくありませんでした。これが役立つかどうかを確認してください。
問題は、Objectという名前のモデルがあることです。 ApplicationObjectやMediaObjectなど、Rubyシステムクラスと重複しない名前を付けます。
それが問題の原因であると推測できますが、それは推測にすぎません。オープンクラスはRubyのすばらしい機能ですが、RubyやRailのクラスと区別できるように、クラスに注意して名前を付ける必要があります。