2012-03-07 25 views
0

form_forrails 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 2013-07-01 19:01:02

回答

0

這是正確的person_form。將其視爲formtag,然後將輸入分配給表單。表單的所有名稱都會像這樣設置(person [attribute])。 fields_for沒有person_form會創建其他名稱,如(權限[管理]) - 這將失敗,因爲權限對象沒有連接到人。通過person_form.fields_for名稱得到正確(人[許可] [管理員])。你不用做任何事情就可以獲得嵌套屬性。