2010-06-13 1 views
5

Так вот сценарий:Formtastic вложенной модели поля формы (Rails 3)

Пользователь:

has_one :company 
accepts_nested_attributes_for :company 

Контроллер:

@user = User.new 
@user.build_company 

Вид:

<% 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 %> 

После соскабливать в Интернете, это SEEMS, как это должно работать. Однако все, что я получаю, - это пользовательские входы. Блок «semantic_fields_for: company» ничего не выводит ...

Я что-то пропустил, или это, возможно, ошибка Rails 3 с Formtastic?

ответ

4

Вы должны использовать "<% =%>" с Rails 3-х блоков вместо "<%%>". Таким образом, код должен быть:

<%= 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

Отсутствует характер .. Должен любить это: P – elsurudo

+0

Вау, большое вам спасибо! Я потратил больше часа на это. – Alex

2

за rails3 нового синтаксиса, в контроллере следует использовать

@user.company.build

вместо

@user.build_company

+0

На самом деле, это не работает. Вы получаете нулевую ссылку ... – elsurudo

+0

проверил ее на rails3 beta4. это работает, это пример, взятый из контроллера я написал: Защиты нового @realty = Realty.new @ realty.ownerships.build (: person_id => Params [: person_id]) respond_to делать | формат | format.html # new.html.erb конец конец методы build_ * были удалены точно. –

+1

Это работает для вас, потому что ваш @realty has_many владельцы. Когда он has_one (как в случае с OP), вам нужно использовать @ realty.build_ownership –