设计中的验证警报不一致

时间:2013-04-03 16:25:28

标签: ruby-on-rails ruby authentication devise validation

我遇到一些问题,让设计验证帮助程序与登录和注册相同。

当用户注册失败或错误填写忘记密码时,会显示设计错误通知。顶部带有消息的红色框,然后每个问题字段以红色突出显示。这是理想的结果。

当用户错误地填写登录表单时,我将获得不同类型的验证。我没有突出显示红色的问题字段,而是获得了与设计语言环境文件绑定的标准闪存通知。

  devise:
    failure:
      invalid: 'Invalid email or password.

以下是观点:

- provide(:title, "Login")
.devise-form-box
  %h2 Login
  = simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'form-vertical' }) do |f|
    = f.error_notification
    = f.input :email, :autofocus => true, :placeholder => "Email Address"
    = f.input :password, :placeholder => "Password"
    = f.input :remember_me, :as => :boolean if devise_mapping.rememberable?
    .clearfix
    = f.button :submit, "Login", :class => 'btn-primary btn-medium'
  = render "devise/shared/links"

关于登录表单为何没有使用与注册或忘记密码相同的验证方法的任何想法?

2 个答案:

答案 0 :(得分:1)

你没有这样的html元素来显示错误,你怎么能期望看到它们?

简单的解决方案是在form_for下添加错误部分。

<%= devise_error_messages! %>

请参阅设计默认模板以供参考。

如果您想进一步自定义错误消息,也很容易,您可以看到devise_error_message!只是对错误消息的操纵:https://github.com/plataformatec/devise/blob/master/app/helpers/devise_helper.rb。因此,您可以检查正常脚手架模板中的错误视图以供参考,以便在需要时进行改进。

答案 1 :(得分:0)

我错了。登录表单不应该突出显示不正确的字段,如注册表单。