如何使用actgable(redux)作为查找和显示具有特定标记的一组对象?
-
06-07-2019 - |
题
我想在标签的show视图中显示文章列表。我在Rails 2.3.2和SQLite3应用程序中使用act作为taggable 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,作为可标记的redux的作者,向我解释这一点。
要显示具有特定标记的文章列表,我只需要更改tags_controller:
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
为:
控制器 /tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.tagged
end
其他提示
我相信这个插件不是责怪的,这是sqlite给你带来的麻烦。我以前遇到过这个 - 似乎sqlite无法理解'table_name.column_name'的语法,即使它没有在网站上提及。在我的情况下,我刚刚切换到MySQL,整个过程没有问题。看看这是否有帮助。
问题是你有一个名为Object的模型。给它一个与Ruby系统类没有重叠的名称,例如ApplicationObject或MediaObject。
我可以推测为什么会引起问题,但这只是猜测。 Open类是Ruby的一个很好的特性,但它意味着你需要小心命名你的类,这样它们就不同于Ruby和Rail的类。
不隶属于 StackOverflow