0

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

博主/app/views/articles/_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 方法没有方法错误,但它存在于我的文章模型中。我显然错过了一些东西,需要帮助填补这个空白。

4

1 回答 1

1

您需要添加

   attr_reader :tag_list

到你的模型。

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

于 2013-07-09T19:36:52.197 回答