0

我想在标签的显示视图中显示文章列表。我在 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 %>  

这是迁移文件的链接

非常感谢。

4

3 回答 3

0

我相信插件不是这里的罪魁祸首,是 sqlite 给你带来了麻烦。我以前遇到过这个 - 似乎 sqlite 无法理解 'table_name.column_name' 语法,即使网站上没有提到它。在我的情况下,我刚刚切换到 MySQL,整个事情都没有问题。看看这是否有帮助。

于 2009-06-19T20:27:57.397 回答
0

问题是您有一个名为 Object 的模型。给它一个与 Ruby 系统类不重叠的名称,例如 ApplicationObject 或 MediaObject。

我可以推测为什么会导致问题,但这只是推测。开放类是 Ruby 的一个很棒的特性,但这意味着您需要小心地命名您的类,以便它们与 Ruby 和 Rail 的类不同。

于 2009-06-20T16:48:11.370 回答
0

非常感谢 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
于 2009-06-20T18:31:45.363 回答