【问题标题】:Nested form child only updates if parent changes嵌套表单子仅在父更改时更新
【发布时间】:2023-04-03 17:39:01
【问题描述】:

In this video(10 秒)您可以看到嵌套属性仅在其父模型更改时才会更新。

使用 rails 3.0.0.beta 和 full project is on github

模型和形式总结:

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks
end

class Task < ActiveRecord::Base
  belongs_to :project
  has_many :assignments
  accepts_nested_attributes_for :assignments
end

class Assignment < ActiveRecord::Base
  belongs_to :task
end


form_for(@project) do |f|

  Project: f.text_field :name

  f.fields_for :tasks do |task_form|
    Task: task_form.text_field :name

    task_form.fields_for :assignments do |assignment_form|
      Assignment: assignment_form.text_field :name
    end
  end

  f.submit
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 nested-forms


    【解决方案1】:

    EDIT2:相同的代码在 Rails 2.3.5 中完美运行。这似乎是测试版的一个错误。

    编辑:我在我的应用中编写了一个测试来模拟这一点。结果如下。

      test "should update empresa" do
        addr = empresas(:ufba).address
        put_with users(:s_one), :update, :id => empresas(:ufba).to_param,
                 :empresa => { :address_attributes => {:id => empresas(:ufba).address.to_param,
                                                       :city => "Feira de Santana"}}
        assert_not_nil assigns(:empresa)
        assert_not_same addr, assigns(:empresa).address, "Endereco nao foi atualizado"
        assert_redirected_to empresa_path(assigns(:empresa))
      end
    

    它运行没有错误。

    【讨论】:

    • 我一直在控制台中测试,只适用于 Rails 2.3.5,在 Rails 3.0 上,Assignment 没有更新。
    • 在 Rails 跟踪器上打开了一张票,并添加了失败的单元测试来演示:rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/…
    • 我试图在 Rails beta 中找到代码,仍然找不到产生错误的代码的差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多