【问题标题】:rails 4 how to add custom form fieldsrails 4如何添加自定义表单字段
【发布时间】:2014-04-07 23:27:18
【问题描述】:

我们如何在 Rails 4 中添加自定义表单字段。

例如:
用户(型号)
用户名
电子邮件
hashed_pa​​ssword

现在在password 的表单字段中,我想要passwordpassword confirm 之类的字段。
但是由于在 rails 4 中引入了强大的参数,我不能简单地发送这些字段。
它会引发错误。

在以前的 Rails 版本中,它曾经是小菜一碟,即在模型中,我们会将自定义表单字段添加到 attr_accessor,我们可以使用它们。

注意:我几周前尝试过这个东西,但它没有用,我不记得确切的错误,但类似于“用户没有方法密码”。
我知道不向您提供确切的错误消息是非常愚蠢的。
抱歉,我无法帮助我删除了该应用程序。

我正在关注本教程(适用于 rails 3)http://www.sitepoint.com/rails-userpassword-authentication-from-scratch-part-i/

【问题讨论】:

  • 为什么? params.require(:user).permit(:password, :password_confirm) 应该很好用

标签: ruby-on-rails ruby ruby-on-rails-3 forms ruby-on-rails-4


【解决方案1】:

查看 How is attr_accessible used in Rails 4? 在 rails 4 中使用强参数

现在在控制器中保护属性。

【讨论】:

    【解决方案2】:

    我在 Rails 4 的模型中使用 attr_accessor

    在我的表格中

    <%= text_field_tag 'param_name' %>
    

    在控制器中

    @model.param_name = params[:param_name]
    

    我认为它工作正常,可以解决您的问题。但! 我不确定以这种方式使用它是否安全。如果有人可以解释为什么出于安全原因不适合并提出更好的方法,我将不胜感激(作为作者,我认为)。

    【讨论】:

    • attr_accessor 在 rails 4 中不再可用,它已被提取到 gem 中。
    • 好的。但我正在使用它(在 Rails 4.0.2 中),我的 Gemfile 中没有 protected_attributes gem。您的意思是,当您在模型文件中使用 attr_accessor 时,它会引发错误?
    • 我什至没有费心使用 attr_accessor 因为我知道它不会有帮助。我也没有尝试过“protected_attributes”,因为我不想依赖已弃用的东西。我从params.require(:user).permit(:password, :password_confirm) 在控制器中收到此错误
    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多