当我转到文章的“编辑”页面时,我的浏览器出现此错误:
博主/应用/视图/物品/ _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方法没有方法错误,但它存在于我的文章模型中。我显然缺少一些东西,需要帮助填补这个空白。
答案 0 :(得分:1)
您需要添加
attr_reader :tag_list
到你的模特。
在处理表单元素时,Rails期望每个元素对应一个模型属性。在您的情况下,您正在创建一个虚拟属性,但要这样做,它需要通常的getter和setter。您已经提供了setter,attr_reader将提供getter。