我正在使用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"}
答案 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已经指出控制器和视图代码对于实际指出问题会有很大帮助。