2010-09-18 83 views
0

我試圖創建一個窗體來創建一個用戶。目前,我有如何使用form_for?

- form_for @user do |f| 
    = "Username" 
    %br 
    = f.text_field :username 
    %br 
    = "Password" 
    %br 
    = f.text_field :password 
    %br 
    = "Confirm Password" 
    %br 
    = f.text_field :password_confirmation 
    %br 
    = "Email" 
    %br 
    = f.text_field :email 
    %br 
    = f.submit "Submit app" 

我不斷收到錯誤undefined method 'password' for #<User:0x8e20750> 用戶確實有一個方法密碼=,但因爲我的加密密碼之前我儲存,沒有密碼的方法。任何人都有解決方法或修復?

回答

0

你應該張貼你的模型爲好,但我猜測,你需要的是補充:

attr_accessor :password 

在一個側面說明,有沒有你正在做自己的身份驗證邏輯理由嗎?也許你應該嘗試完整的解決方案,如Authlogic或Devise?

此外,請看看Formtastic寶石。它確實有助於創建表單。

0

我同意mdrozdziel你可能想給Authlogic(沒有試過設計自己)一槍。

當使用form_for f.text_field:some_field就像是在說text_field:model,:some_field。所以:some_field需要在數據庫中的一個字段,或者你需要getter和setter方法。

爲mdrozdziel說

attr_accessor :password 

,或者如果你想要更多的控制,你可以定義你的模型getter和setter方法。

#in your model 
def password 
    # return something 
end 

def password=(pwd) 
    # set something 
end 
相關問題