2010-12-10 72 views
1
class User 
    has_one :user_profile 
end 
class UserProfile 
    belongs_to :user 
end 

我呈現形式編輯用戶的帳戶:未定義的方法

NoMethodError in Account#edit 
undefined method `Andy' for #<User:0x5f375e8> 

正在使用的first_name的價值爲什麼:

<%= form_for current_user do |f| %> 
<%= f.text_field current_user.user_profile.first_name %> 
<%= end %> 

但是,這將引發一個錯誤?

如何解決此問題(不使用部分)?另外,如果有人能夠引導我閱讀一本書或一些在Rails中使用表單(和嵌套表單)的綜合在線教程,我將非常感謝它。表格讓我瘋狂!

回答

3

text_field幫助器的第一個參數是一個命名模型對象屬性的符號。所以你的情況應該是:

<%= form_for current_user.user_profile do |f| %> 
    <%= f.text_field :first_name %> 
<% end %> 

如果表單需要編輯的用戶和用戶配置模型對象,你需要fields_for切換上下文。

<%= form_for current_user do |f| %> 
    <%= f.text_field :some_user_attribute %> 
    <%= f.fields_for current_user.user_profile do |f| %> 
    <%= f.text_field :first_name %> 
    <% end %> 
<% end %> 

參見:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

+1

看來,`first_name`是在`user_profile`對象,該對象所屬的用戶對象。所以他需要`f.fields_to`來創建一個嵌套模型的表單。 – PeterWong 2010-12-10 11:06:20