Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 保存嵌套属性_Ruby On Rails_Formtastic - Fatal编程技术网

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"} ]