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是一个多对多表,它推动了未结订单的潜在订单数量。