2012-03-07 3 views
0

Глядя на примере form_for от rails docs, я вижу этот пример:Rails Вложенные атрибуты и модель наследования

<%= form_for @person do |person_form| %> 
    First name: <%= person_form.text_field :first_name %> 
    Last name : <%= person_form.text_field :last_name %> 

    <%= fields_for @person.permission do |permission_fields| %> 
    Admin? : <%= permission_fields.check_box :admin %> 
    <% end %> 

    <%= f.submit %> 
<% end %> 

Я попытался скопировать этот шаблон, но заметил, что для того, чтобы получить обновление для правильной работы, Я должен был изменить field_for строку

<%= person_form.fields_for @person.permission do |permission_fields| %> 

Любая идея, почему они проявляют fields_for без переменной родительской формы в передней части (person_form)?

Примеры, приведенные ниже в документах, показывают его с переменной родительской формы.

Благодаря

+0

Я думаю, что это опечатка. Вы также должны иметь возможность делать 'person_form.fields_for: permission' – Andrew

ответ

0

правильно с person_form. подумайте об этом как formtag, и вы просто назначаете входные данные форме. все имена формы устанавливаются так (person [attribute]). fields_for без person_form создаст другое имя, подобное (разрешение [admin]) - это не сработает, потому что объект разрешения не связан с человеком. через person_form.fields_for имена получат право (человек [разрешение] [admin]). вы получаете вложенный атрибут, не делая ничего больше.

Смежные вопросы