使用 Rails (4.2( 表单,如何构造一个表单,使请求的有效负载将嵌套关联表示为哈希,该哈希由关联的主键键键?
我有一个嵌套表单,如文档中所示。如果向下滚动,您将看到以下示例:
<%= form_for @person do |person_form| %>
...
<%= person_form.fields_for :projects do |project_fields| %>
Project #<%= project_fields.index %>
...
<% end %>
...
<% end %>
当表单发出 HTTP PATCH 请求时,我的端点收到的有效负载的形状如下:
"person"=>{"project_attributes"=>{"0"=>{...}, "1"=>{...}, "2"=>{...}...}}
我希望键不是表示数字排序索引的project_attributes
键,而是项目的主键id
。
编辑:
我希望密钥成为项目主密钥的原因是,在我的控制器中,我可以更轻松地更新项目,如下所示:
# Option 1
Project.update(params[:project_attributes].keys, params[:project_attributes].values)
# Option 2
params[:project_attributes].keys.each do |project_id|
Project.update(project_id, params[:project_attributes][project_id])
end
您需要使用accepts_nested_attributes_for
来执行此操作,并且无需担心参数及其传递方式。
有关如何使用accepts_nested_attributes_for
的参考,请遵循本指南。