Domanda

In questo video (10 sec) si può vedere che l'attributo nidificato viene aggiornato solo se si tratta di modello di genitore è cambiato.

Utilizzando rotaie 3.0.0.beta e il progetto completo è su GitHub .

Sintesi di modelli e di forma:

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
È stato utile?

Soluzione

EDIT2: Lo stesso codice funziona perfettamente in Rails 2.3.5. Sembra essere un bug nella versione beta.

Modifica ho scritto un test nella mia app per simulare questo. Ecco il risultato.

  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

E 'eseguito senza errori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top