我如何使用form_for?

时间:2010-09-18 17:39:49

标签: ruby-on-rails forms authentication

我正在尝试创建一个表单来创建用户。目前我有

- 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 =,但因为我在存储之前加密密码,所以没有密码方法。任何人都有工作或修复?

2 个答案:

答案 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