1

我一直在学习本教程:http ://tutorials.jumpstartlab.com/projects/blogger.html

起床到 I3 - 标记

这是我收到的错误:

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

这是导致错误的我的表单的一部分:

<p>
    <%= f.label :tag_list %><br />
    <%= f.text_field :tag_list %>
</p>

这是我的文章.rb

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)
    self.taggings.destroy_all

    tag_names = tags_string.split(",").collect{|s| s.strip.downcase}.uniq

    tag_names.each do |tag_name|
      tag = Tag.find_or_create_by_name(tag_name)
      tagging = self.taggings.new
      tagging.tag_id = tag.id
    end
  end
end

我的猜测是它不喜欢def tag_list=(tags_string) ,但这就是教程中的编写方式。如果您需要更多信息,请告诉我,谢谢!

4

2 回答 2

2

根据您使用的教程,tag_list不是模型字段,而是您应该添加到模型的方法:

def tag_list
  self.tags.map(&:name).join(', ')
end
于 2013-03-19T15:13:34.137 回答
0

这很正常: tag_list 不是您模型的列,并且tag_list方法不存在。你必须定义

def tag_list
  self.taggings
end

或者

def tag_list
  self.taggings.map(&:name)
end

或类似的东西。

于 2013-03-19T15:13:01.267 回答