我想在标签的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的类。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top