Ruby on rails 保存嵌套属性
我有一个嵌套表单,如下所示:Ruby on rails 保存嵌套属性,ruby-on-rails,formtastic,Ruby On Rails,Formtastic,我有一个嵌套表单,如下所示: <%- for subscription in @task.subscriptions -%> <%- semantic_fields_for "task[subscription_attributes][]", subscription do |subscription_form|%> <%- subscription_form.inputs do -%> <%= subs
<%- for subscription in @task.subscriptions -%>
<%- semantic_fields_for "task[subscription_attributes][]", subscription do |subscription_form|%>
<%- subscription_form.inputs do -%>
<%= subscription_form.input :workhours, :label => subscription.user.full_name%>
<%- end -%>
<%- end -%>
<%- end -%>
在表单(视图)中,我获得了workhours字段的正确值。但当我更改值并点击提交按钮时,值从未更改。
我不明白为什么
我在控制台中看到这是在tasks属性的基础上建立起来的。因此,这些值将传递给控制器
"subscription_attributes"=>{"11"=>{"workhours"=>"20"}, "12"=>{"workhours"=>"303"}, "9"=>{"workhours"=>"120"}, "10"=>{"workhours"=>"10"}}
在我拥有的任务上:
@task.update_attributes(params[:task])
根据api页面上给出的示例,我认为您的
subscription\u属性
更新应该更像这样
"subscription_attributes" => [ {"id" => "11", "workhours"=>"20"}, {"id" => "12", "workhours"=>"303"}, {"id" => "9", "workhours"=>"120"}, {"id" => "10", "workhours"=>"10"} ]
因此,您可能需要更改表单以传递更新的ID。请在第一次代码粘贴中修复格式。对
update\u attributes
的调用是否返回true?是的,@task attributes将被保存。仅忽略订阅属性。我以前在其他情况下也这样做过。有些东西不见了,我不明白。
"subscription_attributes" => [ {"id" => "11", "workhours"=>"20"}, {"id" => "12", "workhours"=>"303"}, {"id" => "9", "workhours"=>"120"}, {"id" => "10", "workhours"=>"10"} ]