tag_list没有以表格形式显示(rails)

时间:2013-03-19 15:03:29

标签: ruby-on-rails ruby forms

我一直在完成本教程: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),但这就是它在教程中的编写方式。如果您需要更多信息,请告诉我,谢谢!

2 个答案:

答案 0 :(得分:2)

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

def tag_list
  self.tags.map(&:name).join(', ')
end

答案 1 :(得分:0)

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

def tag_list
  self.taggings
end

或者

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

或类似的东西。