来自我的NoMethodError

时间:2013-07-09 19:03:02

标签: ruby-on-rails rails-activerecord nomethoderror

当我转到文章的“编辑”页面时,我的浏览器出现此错误:

博主/应用/视图/物品/ _form.html.erb

undefined method `tag_list' for #<Article:0x007ffb52130678>

提取的来源(第20行):

18:     <p>
19:         <%= f.label :tag_list %><br />
20:         <%= f.text_field :tag_list %>
21:     </p>

我的文章模型:

class Article < ActiveRecord::Base
  attr_accessible :title, :body, :tag_list, :image
  has_many :comments
  has_many :taggings
  has_many :tags, through: :taggings
  has_attached_file :image

     def tag_list=(tags_string)
        tag_names = tags_string.split(",").collect{ |s| s.strip.downcase }.uniq
        new_or_found_tags = tag_names.collect { |name| Tag.find_or_create_by_name(name) }
        self.tags = new_or_found_tags
     end
end

我有一个包含许多标签的文章模型。这种关系通过另一种称为标记的模型来表示。再次,我在我的文章模型/控制器的编辑页面上收到此错误。我的博客应用程序说我的:tag_list方法没有方法错误,但它存在于我的文章模型中。我显然缺少一些东西,需要帮助填补这个空白。

1 个答案:

答案 0 :(得分:1)

您需要添加

   attr_reader :tag_list

到你的模特。

在处理表单元素时,Rails期望每个元素对应一个模型属性。在您的情况下,您正在创建一个虚拟属性,但要这样做,它需要通常的getter和setter。您已经提供了setter,attr_reader将提供getter。