2010-06-13 7 views
5

Così Ecco lo scenario:Formtastic nidificati campi del modulo modello (Rails 3)

utente:

has_one :company 
accepts_nested_attributes_for :company 

Controller:

@user = User.new 
@user.build_company 

Vista:

<% semantic_form_for @user, :url => register_path do |form| %> 

    <h2>User Information</h2> 

    <%= form.inputs %> 

    <h2>Company Information</h2> 

    <% form.semantic_fields_for :company do |company| %> 
    <%= company.inputs %> 
    <% end %> 

    <%= form.buttons %> 

<% end %> 

Dopo aver setacciato il web, questo SEMBRA che dovrebbe funzionare. Tuttavia, tutto ciò che ottengo sono gli input dell'utente. Il blocco "semantic_fields_for: company" non restituisce nulla ...

Mi manca qualcosa qui, o forse questo è un bug di Rails 3 da fare con Formtastic?

risposta

4

è necessario utilizzare "<% =%>" con Rails 3 blocchi invece di "<%%>". Così, il codice dovrebbe essere:

<%= semantic_form_for @user, :url => register_path do |form| %> 

    <h2>User Information</h2> 

    <%= form.inputs %> 

    <h2>Company Information</h2> 

    <%= form.semantic_fields_for :company do |company| %> 
    <%= company.inputs %> 
    <% end %> 

    <%= form.buttons %> 

<% end %> 
+0

Manca un personaggio .. . devo amarlo: P – elsurudo

+0

Wow, grazie mille! Ho passato più di un'ora a cercarlo. – Alex

2

come per Rails3 nuova sintassi, nel controllore si dovrebbe utilizzare

@user.company.build

invece di

@user.build_company

+0

In realtà, questo non funziona. Ottieni un riferimento zero ... – elsurudo

+0

testato su rails3 beta4. funziona, questo è un esempio tratto da un controllore che ho scritto: def nuove @realty = Realty.new @ realty.ownerships.build (: person_id => params [: person_id]) respond_to do | format | format.html # new.html.erb fine fine i metodi build_ * sono stati rimossi di sicuro. –

+1

Funziona per te perché la tua @realty ha molte proprietà. Quando ha_uno (come nel caso dell'OP), è necessario utilizzare @ realty.build_ownership –