【问题标题】:saving nested attributes保存嵌套属性
【发布时间】:2010-04-02 18:19:06
【问题描述】:

我有一个这样的嵌套表单:

<%- 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 -%>

关于我的任务模型:

  accepts_nested_attributes_for :subscriptions
  attr_accessible :mission_id, :statuscode_id, :name, :objectives, :start_at , :end_at, :hours, :testimony ,:subscriptions_attributes

在表单(视图)中,我在工作时间字段中获得了正确的值。但是当我更改值并点击提交按钮时,这些值永远不会改变。 我不知道为什么...

我在控制台中看到这是建立在任务属性之上的。所以值正在传递给控制器​​。

"subscription_attributes"=>{"11"=>{"workhours"=>"20"}, "12"=>{"workhours"=>"303"}, "9"=>{"workhours"=>"120"}, "10"=>{"workhours"=>"10"}}

在我的 tasks_controller 上:

@task.update_attributes(params[:task])

【问题讨论】:

  • 请修正您第一次粘贴代码时的格式。
  • 您对update_attributes 的调用是否返回true?
  • 是的,@task 属性已保存。只有订阅属性被忽略。我以前在其他情况下也这样做过。缺少某些东西,我不明白。

标签: ruby-on-rails formtastic


【解决方案1】:

根据NestedAttributes api 页面上给出的示例,我认为您的subscription_attributes 更新应该看起来更像这样

"subscription_attributes" => [ {"id" => "11", "workhours"=>"20"}, {"id" => "12", "workhours"=>"303"}, {"id" => "9", "workhours"=>"120"}, {"id" => "10", "workhours"=>"10"} ]

因此,您可能需要更改表单以传递 id 以进行更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多