2013-08-26 6 views
5

Im simple_form Juwel mit und ich brauche eine verschachtelte Form zu tun, aber im Mühe, hier ist ein Code:Schienen verschachtelt Vordrucke has_one Verein

ich habe zwei Modelle:

Apiphones:

class Apiphone < ActiveRecord::Base 
    attr_accessible :key, :phone 
    validates_presence_of :phone 
    belongs_to :store 
end 

Shops:

class Store < ActiveRecord::Base 
    has_one :apiphone 
    accepts_nested_attributes_for :apiphone 
end 

und meiner Ansicht nach:

<%= simple_form_for [@group,@store] do |f| %> 
    <%= f.simple_fields_for :apiphone do |ph| %> 
     <%= ph.input :phone %> 
    <% end %> 
<% end %> 

aber nichts zeigt, irgendwelche Ideen?

Antwort

20

mit fields_for in Verbindung mit accepts_nested_attributes geht davon aus, dass der Datensätze initialisiert. Dies bedeutet, dass @store.apiphone mit Ihren Modellen nicht nil sein sollte, wenn das Formular generiert wird. Zur Lösung dieses Problems müssen Sie sicherstellen, dass apiphone initialisiert und mit @store verknüpft ist (sowohl neue als auch Bearbeitungsaktionen).

def new 
    @store = Store.new 
    @store.build_apiphone 
end 
+0

danke! Dies hat es behoben, Ihr der Mann :) –

+0

Vielen Dank! verwirrte mich lange Zeit –

3

Ich glaube, Sie apiphone in Ihrem Controller, zum Beispiel bauen vergessen:

def new 
... 
@store.build_apiphone 
... 
end 
+2

Ich bin mir nicht sicher, aber '.build' wird für' has_many' verwendet. da dies ein 'has_one' ist, musst du' build_apiphone' verwenden. – jvnill

+0

Du hast recht Ich habe meine Antwort aktualisiert, danke;) – zolter