2013-08-26 4 views
5

Im utilizzando gemma simple_form e ho bisogno di fare un formato nidificato ma im che hanno problemi qui è un certo codice:rotaie associazione annidato modello forme has_one

ho due modelli:

Apiphones:

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

Stores:

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

e, a mio avviso:

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

ma niente sta mostrando, qualche idea?

risposta

20

utilizzando fields_for in combinazione con accepts_nested_attributes assume che i record vengono inizializzati. Ciò significa che, utilizzando i tuoi modelli, @store.apiphone non dovrebbe essere nil quando il modulo viene generato. Il modo per risolvere questo problema è assicurarsi che apiphone sia inizializzato e associato a @store (azioni nuove e di modifica).

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

grazie! questo l'ha risolto, il tuo l'uomo :) –

+0

Grazie mille! mi ha confuso per molto tempo –

3

penso che si dimentica costruire apiphone nel controller, ad esempio:

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

non sono sicuro di questo, ma '.build' è usato per' has_many'. poiché questo è un 'has_one', devi usare' build_apiphone' – jvnill

+0

Hai ragione Sono aggiornato la mia risposta, grazie;) – zolter