Ruby on rails Rails在视图中手动设置嵌套属性
我很难理解如何布局视图,以便为嵌套窗体正确嵌套属性 我的情妇看起来像这样Ruby on rails Rails在视图中手动设置嵌套属性,ruby-on-rails,nested-attributes,Ruby On Rails,Nested Attributes,我很难理解如何布局视图,以便为嵌套窗体正确嵌套属性 我的情妇看起来像这样 Parameters: {"utf8"=>"✓", "authenticity_token"=>"retsty/G2I1FyYybXm9kVaZi+aPjQm4jsmLdLW3wxsc=", "receipt"=>{"receipt"=>"", "receipt_date(1i)"=>"2014", "receipt_date(2i)"=>"9", "receipt_date(
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"retsty/G2I1FyYybXm9kVaZi+aPjQm4jsmLdLW3wxsc=",
"receipt"=>{"receipt"=>"", "receipt_date(1i)"=>"2014", "receipt_date(2i)"=>"9", "receipt_date(3i)"=>"19",
"po_receipts_attributes"=>[
{"jobquote_order_id"=>{"3"=>"", "5"=>""}, "qty"=>"30"},
{"qty"=>"11"}
]},
"commit"=>"Receive"}
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"retsty/G2I1FyYybXm9kVaZi+aPjQm4jsmLdLW3wxsc=",
"receipt"=>{"receipt"=>"", "receipt_date(1i)"=>"2014", "receipt_date(2i)"=>"9", "receipt_date(3i)"=>"19",
"po_receipts_attributes"=>[
{"jobquote_order_id"=>"3", "qty"=>"30"},
{"jobquote_order_id"=>"5", "qty"=>"11"}
]},
"commit"=>"Receive"}
po\u receipts\u属性
数组未正确嵌套哈希
格式:po\u receipts\u属性:[{jobquote\u order\u id:,数量:},{jobquote\u order\u id:,数量:}]
据我所知,我的情妇应该是这样的
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"retsty/G2I1FyYybXm9kVaZi+aPjQm4jsmLdLW3wxsc=",
"receipt"=>{"receipt"=>"", "receipt_date(1i)"=>"2014", "receipt_date(2i)"=>"9", "receipt_date(3i)"=>"19",
"po_receipts_attributes"=>[
{"jobquote_order_id"=>{"3"=>"", "5"=>""}, "qty"=>"30"},
{"qty"=>"11"}
]},
"commit"=>"Receive"}
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"retsty/G2I1FyYybXm9kVaZi+aPjQm4jsmLdLW3wxsc=",
"receipt"=>{"receipt"=>"", "receipt_date(1i)"=>"2014", "receipt_date(2i)"=>"9", "receipt_date(3i)"=>"19",
"po_receipts_attributes"=>[
{"jobquote_order_id"=>"3", "qty"=>"30"},
{"jobquote_order_id"=>"5", "qty"=>"11"}
]},
"commit"=>"Receive"}
我似乎无法在视图中正确嵌套属性。我为此尝试了许多不同的语法
在我看来,我有以下代码
= hidden_field "receipt[po_receipts_attributes][][jobquote_order_id]", jq_o.id
= text_field_tag "receipt[po_receipts_attributes][][qty]", ""
HTML输出
<td>
<input id="receipt_po_receipts_attributes__jobquote_order_id_3" name="receipt[po_receipts_attributes][][jobquote_order_id][3]" type="hidden" />
<input id="receipt_po_receipts_attributes__qty" name="receipt[po_receipts_attributes][][qty]" type="text" value="" />
</td>
<td>
<input id="receipt_po_receipts_attributes__jobquote_order_id_5" name="receipt[po_receipts_attributes][][jobquote_order_id][5]" type="hidden" />
<input id="receipt_po_receipts_attributes__qty" name="receipt[po_receipts_attributes][][qty]" type="text" value="" />
</td>
处理此问题的最佳方法是什么?内部的
[]
中应该有一个整数,如:
= hidden_field "recepit[po_receipts_attributes][1][jobquote_order_id]", jq_o.id
= text_field_tag "receipt[po_receipts_attributes][1][qty]", ""
当Rails将表单体解析为params散列时,该整数将属性保持在一起。每套
po\u receipt\u属性
都需要一个不同的ID。如果您在服务器端生成字段,您可以使用fields\u进行
,并且这些ID将自动为您管理 内部的[]
中应该有一个整数,如:
= hidden_field "recepit[po_receipts_attributes][1][jobquote_order_id]", jq_o.id
= text_field_tag "receipt[po_receipts_attributes][1][qty]", ""
当Rails将表单体解析为params散列时,该整数将属性保持在一起。每套
po\u receipt\u属性
都需要一个不同的ID。如果您在服务器端生成字段,您可以使用fields\u进行
,并且这些ID将自动为您管理 应该是这样的:
jobquote_orders.each_with_index do |jq_o, i|
= hidden_field_tag "recepit[po_receipts_attributes][#{i}][jobquote_order_id]", jq_o.id
= text_field_tag "receipt[po_receipts_attributes][#{i}][qty]", ""
哪个应生成参数:
"po_receipts_attributes" => {
"0" => {"jobquote_order_id"=>"3", "qty"=>"30"},
"1" => {"jobquote_order_id"=>"5", "qty"=>"11"}
}
您可以稍后保存(按照问题中的指定手动保存):
应该是这样的:
jobquote_orders.each_with_index do |jq_o, i|
= hidden_field_tag "recepit[po_receipts_attributes][#{i}][jobquote_order_id]", jq_o.id
= text_field_tag "receipt[po_receipts_attributes][#{i}][qty]", ""
哪个应生成参数:
"po_receipts_attributes" => {
"0" => {"jobquote_order_id"=>"3", "qty"=>"30"},
"1" => {"jobquote_order_id"=>"5", "qty"=>"11"}
}
您可以稍后保存(按照问题中的指定手动保存):
请尝试按以下方式使用:
<%= form_for @receipt do |receipt_form| %>
<%= receipt_form.fields_for :po_receipts do |po_receipts_fields| %>
<%= po_receipts_fields.hidden_field :jobquote_order_id, jq_o.id %>
<%= po_receipts_fields.text_field :qty %>
<% end %>
<% end %>
尝试使用以下方法:
<%= form_for @receipt do |receipt_form| %>
<%= receipt_form.fields_for :po_receipts do |po_receipts_fields| %>
<%= po_receipts_fields.hidden_field :jobquote_order_id, jq_o.id %>
<%= po_receipts_fields.text_field :qty %>
<% end %>
<% end %>
以我的目标方式显示属性数组。在我问这个问题之前,我试着把jq_o.id
放在[]
中,正如你所说的那样,但在API文档之后我没有看到这一点。我很困惑。当我把jq\u o.id
放在[]
中时,我得到了<代码>“订单收据属性”=>{“3”=>{“订单id”=>{“3”=>”,“数量”=>“30”},“5”=>{“订单id”=>{“5”=>”,“数量”=>“11”}显示了我所针对的属性数组。在我问这个问题之前,我试着把jq_o.id
放在[]
中,正如你所说的那样,但在API文档之后我没有看到这一点。我很困惑。当我把jq\u o.id
放在[]
中时,我得到了<代码>“采购订单收据属性”=>{“3”=>{“订单id”=>{“3”=>,“数量”=>“30”},“5”=>{“订单id”=>{“5”=>,“数量”=>“11”}感谢您提供的解决方案。您能否允许接受
的嵌套属性以该语法自动处理它?我曾想过使用这样的索引,但因为它没有遵循API文档,所以它似乎不正确。由于返回的记录集,我需要手动(我想)创建视图,否则我会使用字段\u作为
。是的,我可以假定。如果您使用的是accept_nested_attributes
,那么为什么要手动设置它们?“由于返回的记录集”。我需要测试订单,看看它是否在包含在表单中之前已关闭。它的格式仍然不正确。这是我将索引添加到[]
时返回的内容<代码>“采购订单收据属性”=>{“0”=>{“订单id”=>{“3”=>,“数量”=>,“1”=>{“订单id”=>{“5”=>,“数量”=>,}
@Beengie查看更新的答案。您需要将hidden_field
更改为hiddel_field_标签
,然后它就可以工作了。很抱歉给您带来不便。谢谢您的解决方案。您能否允许接受
的嵌套属性以该语法自动处理它?我曾想过使用这样的索引,但因为它没有遵循API文档,所以它似乎不正确。由于返回的记录集,我需要手动(我想)创建视图,否则我会使用字段\u作为
。是的,我可以假定。如果您使用的是accept_nested_attributes
,那么为什么要手动设置它们?“由于返回的记录集”。我需要测试订单,看看它是否在包含在表单中之前已关闭。它的格式仍然不正确。这是我将索引添加到[]
时返回的内容<代码>“采购订单收据属性”=>{“0”=>{“订单id”=>{“3”=>,“数量”=>,“1”=>{“订单id”=>{“5”=>,“数量”=>,}
@Beengie查看更新的答案。您需要将hidden_field
更改为hiddel_field_标签
,然后它就可以工作了。很抱歉给您带来不便。谢谢穆罕默德。我之所以走这条路线,是因为我正在将另一个表中的数据拉入我在这里没有列出的混合中。jobquote_orders是一个多对多表,它推动了未结订单的潜在订单数量。谢谢Mohamed。我之所以走这条路线,是因为我正在将另一个表中的数据拉入我在这里没有列出的混合中。jobquote_orders是一个多对多表,它推动了未结订单的潜在订单数量。