【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多