2014-06-18 85 views
2

所以,我使用的設計爲用戶認證的Rails應用程序。我希望將名字和姓氏添加到設計用戶。所以,我爲用戶數據庫創建了新的列。不幸的是,當我嘗試我的表單時,我得到了「undefined method`first_name'」。這裏是表格:設計未定義的方法'first_name'

 <h2>Sign up</h2> 

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <div><%= f.label :first_name %><br /> 
     <%= f.first_name :first_name, autofocus: true %></div> 

    <div><%= f.label :last_name %><br /> 
     <%= f.last_name :last_name, autofocus: true %></div> 

    <div><%= f.label :email %><br /> 
    <%= f.email_field :email, autofocus: true %></div> 

    <div><%= f.label :password %><br /> 
     <%= f.password_field :password, autocomplete: "off" %></div> 

    <div><%= f.label :password_confirmation %><br /> 
     <%= f.password_field :password_confirmation, autocomplete: "off" %></div> 

    <div><%= f.submit "Sign up" %></div> 
<% end %> 

我確認數據庫列實際上是通過使用控制檯添加的。我輸入

用戶= User.new到控制檯,並得到如下:

"=> #<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil> " 

當我鍵入user.first_name,控制檯將返回零(這是很好的,因爲不返回任何錯誤,所以列確實被添加到數據庫中)。到底是怎麼回事?什麼是可能的修復?

回答

7

未定義的方法 'FIRST_NAME'

在你的情況下,錯誤是由於該行

<%= f.first_name :first_name, autofocus: true %> 

這應該是這樣的

<%= f.text_field :first_name, autofocus: true %> 

而且此線也是

<%= f.last_name :last_name, autofocus: true %> 

必須更換爲相同,以避免另一個錯誤

<%= f.text_field :last_name, autofocus: true %> 

您正在使用的attribute names代替text_field,所以是錯誤。

看一看這些Guides爲可用form_helpers及其usage.It將是非常有用的。

+0

謝謝!這解決了問題... – user3190923

相關問題