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 に答える