Ruby on rails Rails多对多令牌字段帮助

Ruby on rails Rails多对多令牌字段帮助,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我遇到了我的模型不想保存的问题。我有一个标记字段输入。 我遵循了以下令牌输入指南: 当我尝试创建新的Konkurancer时,出现以下错误: NoMethodError in Admin/konkurrancersController#create undefined method `class_name' for nil:NilClass Rails.root: C:/Rails/konkurranceportalen Application Trace | Framework Trace

我遇到了我的模型不想保存的问题。我有一个标记字段输入。 我遵循了以下令牌输入指南:

当我尝试创建新的Konkurancer时,出现以下错误:

NoMethodError in Admin/konkurrancersController#create

undefined method `class_name' for nil:NilClass

Rails.root: C:/Rails/konkurranceportalen
Application Trace | Framework Trace | Full Trace

app/models/konkurrancer.rb:15:in `tag_tokens='
app/controllers/admin/konkurrancers_controller.rb:48:in `new'
app/controllers/admin/konkurrancers_controller.rb:48:in `create'

http://pastie.org/1834194

Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"yo7wcAQl81tx3zZpPP44ENPYzYRZLpgyYKY+HK3yFKM=",
 "konkurrancer"=>{"name"=>"Vind en rejse",
 "banner2"=>"asdasd",
 "tracking"=>"sadasd",
 "vaerdi"=>"12222",
 "tid"=>"1 min",
 "tag_tokens"=>"1",
 "bedom"=>"2",
 "kategori_id"=>"9",
 "form"=>"Nyhedsbrev",
 "partner"=>"Iqmedier",
 "udtraekkes(3i)"=>"30",
 "udtraekkes(2i)"=>"4",
 "udtraekkes(1i)"=>"2011",
 "udtraekkes(4i)"=>"08",
 "udtraekkes(5i)"=>"26",
 "arrangeor"=>"",
 "note"=>""},
 "commit"=>"Opret konkurrence"}
我的Konkurancer型号:

class Konkurrancer < ActiveRecord::Base
attr_accessible :name, :tag_tokens
  has_many :tagsmenus
  has_many :tags, :through => :tagsmenus
attr_reader :tag_tokens

  def tag_tokens=(ids)
    self.tag_ids = ids.split(",")
  end

end

我已经创建了连接表和模型,还将关系添加到标记模型中

您的模型有一些相互冲突的语句。您首先定义:

attr_accessor ... :tag_tokens
那么以后呢,

attr_reader :tag_tokens
鉴于第一行,这是不必要的,反之亦然,鉴于之后您有一个设定者的定义:

def tag_tokens(ids)
  self.tag_ids = ids.split(',')
end
我也看不到定义了标记ID,因为它不是表中的一列。您可能应该删除
tag\u令牌的
attr\u访问器
定义,然后为初学者定义
tag\u id
方法。

class Tagsmenuclass Tagsmenu < ActiveRecord::Base
  belongs_to :konkurrancer
  belongs_to :tag
end
属于:Konkurancer 属于:标签 结束
模型中是否有一个名为
标记ID
的字段?我已用相应的模型更新了我的答案。我发现解决方案定义了标记与标记中的Konkurancer之间的关系。请注意,您可以接受自己的答案:)我没有名为标记ID的列。你能告诉我我的模型应该是什么样子吗?:)
attr_reader :tag_tokens
def tag_tokens(ids)
  self.tag_ids = ids.split(',')
end
class Tagsmenu < ActiveRecord::Base
  belongs_to :konkurrancer
  belongs_to :tag
end