有关mongoid references_many,视图和控制器的问题

时间:2011-04-02 22:32:59

标签: ruby-on-rails-3 mongoid

我正在使用Mongoid在Rails 3中使用MongoDB。我已经定义了下面的类,但是当我尝试通过scaffolded视图创建一个新的Hyperlink时,我收到一个错误。我相信正在发生的事情是Tags数组没有得到正确处理。我正在使用默认的控制器脚手架。我需要做些什么来确保mongoid知道如何添加标签?

class Hyperlink
  include Mongoid::Document
  field :name
  field :url
  embeds_many :comments

  references_many :tags

  validates_presence_of :name, :url
  validates_uniqueness_of :name, :url
end

class Tag
  include Mongoid::Document

  field :name
  validates_uniqueness_of :name
  referenced_in :hyperlink    
end

控制器响应     HyperlinksController中的TypeError #create

can't convert Symbol into Integer

**Request**

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"yn5SwZPBIMcpzrGQeO9t3tJ2Y2Q6nlsDBPbI43ahj0k=",
 "hyperlink"=>{"name"=>"Stack Overflow",
 "link"=>"http:://www.stackoverflow.com",
 "tags"=>{"tag"=>"programming"}},
 "commit"=>"Create Hyperlink"}

2 个答案:

答案 0 :(得分:2)

尝试将accepts_nested_attributes_for :tags添加到HyperLink

答案 1 :(得分:0)

理想情况下,您的参数应如下所示(注意标签中的更改):

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"yn5SwZPBIMcpzrGQeO9t3tJ2Y2Q6nlsDBPbI43ahj0k=",
 "hyperlink"=>{"name"=>"Stack Overflow",
 "link"=>"http:://www.stackoverflow.com",
 "tags"=>{"0" => {"name"=>"programming", :id => "xxxx"}}},
 "commit"=>"Create Hyperlink"}

正如jdc已经指出控制器和视图代码对于实际指出问题会有很大帮助。