HashWithIndifferentAccess在相关模型中

时间:2011-05-09 22:32:04

标签: ruby-on-rails associations mass-assignment

我有一个rails应用程序,我在两个数据库之间链接字段。数据库的东西似乎都很好。

但是,我有一个表单,我将描述从远程数据库映射到本地数据库中的产品。

用于创建产品的表单并选择说明正常

#_form.rb
 semantic_form_for @products do |f| 

   f.input :name
   semantic_fields_for :description_maps do |description|
     description.input :desciption_map_id, :input_html=>{:name=>"product[description_map][description_id]}, :collection => @descriptions
   end
 end

#product.rb 
class Product < ActiveRecord::Base
  attr_accessible :name, :description_map_attributes, :description_map

  has_one :description_map

  accepts_nested_attributes_for :description_map

当我提交表单时,我收到错误

DescriptionMap(#...) expected, got ActiveSupport::HashWithIndifferentAccess(#othernumber)

我似乎无法弄清楚为什么会这样。

发布的参数看起来很好

"product"=>{"name"=>"test name", 
"description_map"=>{"description_id"=>"1"}}

2 个答案:

答案 0 :(得分:1)

结果证明这是formtastic如何命名描述图的问题。 在这个问题中,我指定了

 description.input :desciption_map_id, :input_html=>{:name=>"product[description_map][description_id]}, :collection => @descriptions

但'description_map'必须是'description_map_attributes',就像这样

 description.input :desciption_map_id, :input_html=>{:name=>"product[description_map_attributes][description_id]}, :collection => @descriptions

希望这个答案有助于其他人遇到同样的问题。

答案 1 :(得分:0)

你应该使用:: description_map(没有“S”)因为是一个has_on关系

semantic_fields_for :description_map do |description|
  description.input :desciption_map_id, :input_html=>{:name=>"product[description_map]      [description_id]}, :collection => @descriptions