2013-08-26 15 views
5

im przy simple_form gem i muszę zrobić zagnieżdżonego formularza, ale im kłopoty Oto niektóre kodu:szyny stowarzyszenie zagnieżdżone modelu formy has_one

mam dwa modele:

Apiphones:

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

Sklepy:

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

i moim zdaniem:

ale nic nie pokazuje, żadnych pomysłów?

Odpowiedz

20

użyciu fields_for w połączeniu z accepts_nested_attributes zakłada, że ​​zapisy są inicjowane. Oznacza to, że przy korzystaniu z modeli, @store.apiphone nie powinno być nil podczas generowania formularza. Sposobem na rozwiązanie tego problemu jest zainicjowanie apiphone i powiązanie go z @store (zarówno nowe, jak i edytowane).

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

dzięki! to naprawiło to, twój mężczyzna :) –

+0

Wielkie dzięki! dezorientował mnie przez długi czas –

3

myślę zapomnieć budować apiphone w kontrolerze, na przykład:

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

Nie jestem tego pewien, ale '.build' jest używany dla' has_many'. ponieważ jest to 'has_one', musisz użyć' build_apiphone' – jvnill

+0

Masz rację Jestem zaktualizowany moja odpowiedź, dzięki;) – zolter

Powiązane problemy