使用单个模型rails显示“不同形式的相同字段”的不同验证消息

时间:2013-04-22 05:42:58

标签: ruby-on-rails devise validation

这里我使用错误消息进行注册并使用具有单一模型user.rb的设计登录表单。如何更改不同表单的字段电子邮件和密码的错误消息? 在user.rb中我使用:

 validates_presence_of :full_name       
 validates_presence_of :email, :message => "enter email"
 validates_confirmation_of :password
 validates_presence_of :password, :message=> "enter password"

以注册形式:

= form_for(resource, :validate => true, :as => resource_name, :url => registration_path(resource_name)) do |f|
  %ul
    %li
      = f.label :full_name
      = f.text_field :full_name
    %li
    = f.label :email
      = f.email_field :email
    %li
      = f.label :password
      = f.password_field :password
    %li
      = f.label :password_confirmation
      = f.password_field :password_confirmation
    %li
      = f.label :zip
      = f.text_field :zip    
   = f.submit "Sign up", :class=> "btn btn-primary"

以登录形式:

= form_for(resource, :validate => true, :as => resource_name, :url => session_path(resource_name)) do |f|      
  %ul
    %li
      = f.label :email
      = f.email_field :email
    %li
      = f.label :password
      = f.password_field :password
    - if devise_mapping.rememberable?
      %li
        = f.check_box :remember_me
        = f.label :remember_me
  %div
    = f.submit "Log in", :class=> "btn btn-primary mt10 ml60"

如何更改登录表单的上述消息?

2 个答案:

答案 0 :(得分:0)

默认情况下,登录表单会显示“无效的电子邮件或密码”。

这是故意的,因为对于登录操作,这种模糊的消息比特定的更好,例如“密码太短”,“电子邮件不存在”等。

我认为没有必要将其改为特定的形式,如其他正常形式。

答案 1 :(得分:0)

在此处考虑问题的最佳答案:Fully custom validation error message with Rails

这是一种非常灵活且可扩展的方法,用于修改各种模型属性及其相关验证错误的错误消息和字段名称