字段不为空时,验证失败为空

埃迪读者

我正在运行ruby 1.9.3和rails 4.1.4在models \ profile.rb中尝试以下验证

attr_accessor :password
validates :name, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
validates :password, :confirmation => true #password_confirmation attr

validates_length_of:password,:in => 6..20,:on =>:create before_save:encrypt_password

在表单中查看profile \ new.html.erb

<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>

<p>
  <%= f.label :email %><br />
  <%= f.text_field :email %>
</p>

<p>
  <%= f.label :password %><br />
  <%= f.password_field :password %>
</p>
<p>
  <%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %>
</p>
<p>
  <%= f.label :interests %><br />
  <%= f.text_area :interests %>
</p>
<p>
  <%= f.label :zip %><br />
  <%= f.text_field :zip %>
</p>
<p>
  <%= f.label :country %><br />
  <%= f.country_select :country, ["United Kingdom"] %>  </p>

使用强参数controllers \ profile_controller,rb

 class ProfilesController < ApplicationController

def new
  @profile = Profile.new 
end
def create
  @profile = Profile.new(params[profile_params])
  if @profile.save
    flash[:notice] = "You signed up successfully"
    flash[:color]= "valid"
  else
    flash[:notice] = "Form is invalid"
    flash[:color]= "invalid"
  end
  render "new"
end
private
  ## Strong Parameters 
   def profile_params
     params.require(:profile).permit(:name, :email, :password, :interests,:zip)
  end
 end

验证总是失败,说明字段为空。通过引发异常,报告将显示模型配置文件及其字段。好像数据根本无法访问,所以我怀疑我是在错误地使用强参数。
欢迎任何意见。

里奇耶

profile_params函数将直接为您返回带有数据的哈希。
基本上,它的工作是过滤params名称为的参数的键的“配置文件”键值的哈希值,permit(...)因此解决方法是编写

@profile = Profile.new(profile_params)

代替

@profile = Profile.new(params[profile_params])

使用强大的参数,您几乎永远不会params直接通过控制器操作(例如create数组进行交互私有强参数方法将为您处理此问题,并且仅将安全的,经过过滤的数据提供给您的控制器操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅当字段不为空时验证

来自分类Dev

jQuery验证字段不为空时

来自分类Dev

验证失败时,使输入字段为空的角度

来自分类Dev

验证输入字段不为空

来自分类Dev

验证规则,当字段不为空时发出警报

来自分类Dev

Laravel表单验证,如果不为空则失败

来自分类Dev

自动装配字段为空,但在构造函数自动装配时不为空

来自分类Dev

自动装配字段为空,但在构造函数自动装配时不为空

来自分类Dev

字段验证显示空指针异常,即使不为空

来自分类Dev

语义UI表单验证-仅当值不为空时才验证某些表单字段

来自分类Dev

Rails:仅在创建时或在字段不为空时更新时验证

来自分类Dev

CakePHP仅当几个必填字段不为空时才验证特定规则

来自分类Dev

验证失败:电子邮件不能为空,密码不能为空-不为空

来自分类Dev

使用Selenium WebDriver验证文本字段不为空

来自分类Dev

Rails 5:如果字段不为空,则验证长度

来自分类Dev

Cakephp 2 即使在字段不为空后也需要验证

来自分类Dev

Elasticsearch获取数据,其中字段不为空/字段为空或字段存在/字段不存在

来自分类Dev

MVC ModelState验证失败,为空值

来自分类Dev

身份验证失败时,MVC验证码ViewBag为空(ModelState.IsValid)

来自分类Dev

验证ListBox的内容不为空

来自分类Dev

验证ListBox的内容不为空

来自分类常见问题

当字段不为空时创建部分索引

来自分类Dev

当字段不为空时创建部分索引

来自分类Dev

输入字段不为空时如何启用按钮

来自分类Dev

仅当值不为空时才打印字段

来自分类Dev

流利的验证收集项不为空/空

来自分类Dev

jQuery Validate插件-仅在其中一个字段不为空时验证

来自分类Dev

javascript输入验证-当所有字段为空时无法验证

来自分类Dev

验证:如何在输入为空时将不需要的字段设置为“ null”

Related 相关文章

  1. 1

    仅当字段不为空时验证

  2. 2

    jQuery验证字段不为空时

  3. 3

    验证失败时,使输入字段为空的角度

  4. 4

    验证输入字段不为空

  5. 5

    验证规则,当字段不为空时发出警报

  6. 6

    Laravel表单验证,如果不为空则失败

  7. 7

    自动装配字段为空,但在构造函数自动装配时不为空

  8. 8

    自动装配字段为空,但在构造函数自动装配时不为空

  9. 9

    字段验证显示空指针异常,即使不为空

  10. 10

    语义UI表单验证-仅当值不为空时才验证某些表单字段

  11. 11

    Rails:仅在创建时或在字段不为空时更新时验证

  12. 12

    CakePHP仅当几个必填字段不为空时才验证特定规则

  13. 13

    验证失败:电子邮件不能为空,密码不能为空-不为空

  14. 14

    使用Selenium WebDriver验证文本字段不为空

  15. 15

    Rails 5:如果字段不为空,则验证长度

  16. 16

    Cakephp 2 即使在字段不为空后也需要验证

  17. 17

    Elasticsearch获取数据,其中字段不为空/字段为空或字段存在/字段不存在

  18. 18

    MVC ModelState验证失败,为空值

  19. 19

    身份验证失败时,MVC验证码ViewBag为空(ModelState.IsValid)

  20. 20

    验证ListBox的内容不为空

  21. 21

    验证ListBox的内容不为空

  22. 22

    当字段不为空时创建部分索引

  23. 23

    当字段不为空时创建部分索引

  24. 24

    输入字段不为空时如何启用按钮

  25. 25

    仅当值不为空时才打印字段

  26. 26

    流利的验证收集项不为空/空

  27. 27

    jQuery Validate插件-仅在其中一个字段不为空时验证

  28. 28

    javascript输入验证-当所有字段为空时无法验证

  29. 29

    验证:如何在输入为空时将不需要的字段设置为“ null”

热门标签

归档