【问题标题】:How to find and display a group of objects with a specific tag using acts as taggable (redux)?如何使用可标记(redux)查找和显示具有特定标记的一组对象?
【发布时间】:2009-06-19 19:49:25
【问题描述】:

我想在标签的显示视图中显示文章列表。我在 Rails 2.3.2 和 SQLite3 应用程序中使用充当可标记的 redux 插件。我已经知道basic example 带我去,分配标签,然后在文章中显示它们的列表。

现在我想显示属于某个标签的文章列表,但出现以下错误:

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 %>  

这是link to the migration file

非常感谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-plugins


    【解决方案1】:

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

    【讨论】:

    • 感谢您的快速回复。我在让 MySQL Gem 在 Rails 2.3.2 中工作时遇到了麻烦。如果它解决了上述问题,会通知您。
    • 终于让 MySQL 与 rails 2.3.2 一起工作了。不幸的是,它并没有解决与我对插件缺乏了解有关的问题:)。
    【解决方案2】:

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

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

    【讨论】:

    • 并重命名您对对象、@objects 等的所有引用。
    • 抱歉,通过命名模型对象,我为被标记的“事物”提供了一个通用名称。我已将“对象”更改为“文章”以使其更清晰。感谢您指出。
    • 是的,现在我想起来了,如果你真的有一个名为 Object 的模型,它会更早且更神秘地失败。 :)
    【解决方案3】:

    非常感谢 Geemus,acts as taggable 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2016-10-22
      • 1970-01-01
      • 2022-11-10
      • 2013-07-14
      相关资源
      最近更新 更多