10

ich RoR lerne und ich versuche, wie zu finden, ein fields_for in ein anderes mit has_one Modellen wie folgt festgelegt:Rails 4: fields_for in fields_for

class Child < ActiveRecord::Base 
    belongs_to :father 
    accepts_nested_attributes_for :father 
end 

class Father < ActiveRecord::Base 
    has_one :child 
    belongs_to :grandfather 
    accepts_nested_attributes_for :grandfather 
end 


class Grandfather < ActiveRecord::Base 
    has_one :father 
end 

I Nested Modell Formular Teil 1 auf Railscasts verwendet erhalten diese: In children_controller.rb:

def new 
    @child = Child.new 
    [email protected]_father 
    father.build_grandfather 
    end 

def child_params 
     params.require(:child).permit(:name, father_attributes:[:name], grandfather_attributes:[:name]) 
    end 

Und meine Form:

<%= form_for(@child) do |f| %> 
    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    mother:<br> 
    <%= f.fields_for :father do |ff| %> 
    <%= ff.label :name %> 
    <%= ff.text_field :name %><br> 
     grand mother:<br> 
     <%= f.fields_for :grandfather do |fff| %> 
     <%= fff.label :name %> 
     <%= fff.text_field :name %> 
     <% end %> 
    <% end %> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Ich versuche, die Daten mit abzurufen:

aber der Name des Großvaters wird nicht funktionieren. Ich kann den Fehler nicht finden ... jemand, der dabei helfen kann? Danke!

Antwort

15

Try Schalt:

<%= f.fields_for :grandfather do |fff| %> 

zu:

<%= ff.fields_for :grandfather do |fff| %> 

und Schalt:

params.require(:child).permit(:name, father_attributes:[:name], grandfather_attributes:[:name]) 

An:

params.require(:child).permit(:name, father_attributes:[:name, grandfather_attributes:[:name]]) 
+0

Es funktioniert perfekt! Vielen Dank! – user3029400

Verwandte Themen