我正在尝试创建一个表单来创建用户。目前我有
- 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>
用户确实有一个方法password =,但因为我在存储之前加密密码,所以没有密码方法。任何人都有工作或修复?
答案 0 :(得分:0)
您也应该发布您的模型,但我猜,您需要的是添加:
attr_accessor :password
另一方面,你有没有理由做自己的身份验证逻辑?也许你应该尝试像Authlogic或Devise这样的完整解决方案?
另外,请看看Formtastic Gem。创建表单确实很有帮助。
答案 1 :(得分:0)
我同意mdrozdziel的说法,你可能想给Authlogic(我自己没有尝试过Devise)。
使用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