2010-09-18 35 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