0

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

但是,我有一种形式,我将远程数据库中的描述映射到本地数据库中的产品。

用于创建产品和选择描述的表单工作正常

#_form.rb
 semantic_form_for @products 做 |f|

   f.输入:名称
   semantic_fields_for :description_maps 做 |description|
     description.input :desciption_map_id, :input_html=>{:name=>"product[description_map][description_id]}, :collection => @descriptions
   结尾
 结尾

#product.rb
类产品 < ActiveRecord::Base
  attr_accessible :name, :description_map_attributes, :description_map

  has_one :description_map

  accept_nested_attributes_for :description_map

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

DescriptionMap(#...) 预期,得到 ActiveSupport::HashWithIndifferentAccess(#othernumber)

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

发布的参数看起来不错

"产品"=>{"名称"=>"测试名称",
"description_map"=>{"description_id"=>"1"}}

4

2 回答 2

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

希望这个答案可以帮助其他有同样问题的人。

于 2011-05-10T04:49:29.840 回答
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

结尾

于 2012-06-08T19:15:03.450 回答