【问题标题】:How do I use form_for?如何使用 form_for?
【发布时间】:2010-09-18 17:39:48
【问题描述】:
我正在尝试创建一个表单来创建用户。目前我有
- 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=,但是因为我在存储密码之前对密码进行了加密,所以没有密码方法。有人有解决方法或修复方法吗?
【问题讨论】:
标签:
ruby-on-rails
forms
authentication
【解决方案1】:
您也应该发布您的模型,但我猜,您需要添加的是:
attr_accessor :password
顺便说一句,您是否有理由使用自己的身份验证逻辑?也许您应该尝试完整的解决方案,例如 Authlogic 或 Devise?
另外,请查看 Formtastic Gem。它确实有助于创建表单。
【解决方案2】:
我同意 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