Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 相关模型中无差异访问的hash_Ruby On Rails_Associations_Mass Assignment - Fatal编程技术网

Ruby on rails 相关模型中无差异访问的hash

Ruby on rails 相关模型中无差异访问的hash,ruby-on-rails,associations,mass-assignment,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 :descipt

我有一个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 #_form.rb @products do|f|的语义形式 f、 输入:姓名 语义_字段_用于:描述_地图做|描述| description.input:description\u map\u id,:input\u html=>{:name=>“产品[description\u map][description\u id]},:collection=>@descriptions 结束 结束 #product.rb 类产品 DescriptionMap(#...) expected, got ActiveSupport::HashWithIndifferentAccess(#othernumber) DescriptionMap(#…)应为,已获得ActiveSupport::HashWithInferenceTaccess(#othernumber) 我似乎不明白为什么会这样

发布的参数看起来不错

"product"=>{"name"=>"test name", "description_map"=>{"description_id"=>"1"}} “产品”=>{“名称”=>“测试名称”, “描述映射”=>{“描述id”=>“1”}

原来这是formtastic如何命名描述图的问题。 在问题中,我已经详细说明了

description.input :desciption_map_id, :input_html=>{:name=>"product[description_map][description_id]}, :collection => @descriptions description.input:description\u map\u id,:input\u html=>{:name=>“产品[description\u map][description\u id]},:collection=>@descriptions 但是“描述映射”必须是这样的“描述映射属性”

description.input :desciption_map_id, :input_html=>{:name=>"product[description_map_attributes][description_id]}, :collection => @descriptions description.input:description\u map\u id,:input\u html=>{:name=>“产品[description\u map\u attributes][description\u id]},:collection=>@descriptions
希望这个答案能帮助其他有同样问题的人。

你应该使用::description\u map(不带“S”)因为是一个has\u on关系

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

结束

您没有正确使用嵌套模型。您是否尝试为:描述映射执行f.fields\u?我使用的是formtastic,所以它是语义字段,这是正确的。好吧……和f.semantic\u-field\u或类似的东西?您必须嵌套您的表单…Golden!我在rails 3.0.x上,没有使用formtastic。我在一个数组中使用复选框嵌套表单。我必须“构建”“由于rails无法很好地处理复选框数组,因此使用check_-box_标记代替form_-helper/fields_-for.check_-box创建表单。一直挣扎到,丁!,在嵌套属性名称中添加“\u属性”。在这个问题上,我发现了很多复杂的答案,而在我的例子中,正确的答案是如此简单(一旦点击就有意义)。谢谢