Ruby on rails designe没有验证错误

Ruby on rails designe没有验证错误,ruby-on-rails,authentication,ruby-on-rails-4,devise,Ruby On Rails,Authentication,Ruby On Rails 4,Devise,我使用Desive登录。除了一个例外,一切正常。如果用户在登录页面上输入错误或没有值,则不会发生任何情况。无错误或错误消息(使用正确的数据登录即可) 我只有在/session/new页面上有这个问题 这是我的看法 .container .row.text_content_top .alert.alert-danger %button.close{ type: "button", "data-dismiss" => "alert"} × = devise_

我使用Desive登录。除了一个例外,一切正常。如果用户在登录页面上输入错误或没有值,则不会发生任何情况。无错误或错误消息(使用正确的数据登录即可)

我只有在/session/new页面上有这个问题

这是我的看法

.container


.row.text_content_top
    .alert.alert-danger
      %button.close{ type: "button", "data-dismiss" => "alert"} ×
      = devise_error_messages!
  .row.text_content_top
    .col-md-4.col-md-offset-4
      %h2 Sign in
  .row.text_content
    .col-md-4.col-md-offset-4.well
      = form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
        = devise_error_messages!
        .input-group.has-feedback
          %span.input-group-addon
            %i.fa.fa-envelope-o.fa-fw
          = f.label :email, class: 'sr-only'
          = f.email_field :email, autofocus: true, class: 'form-control', placeholder: 'E-Mail'
        .input-group.has-feedback.top-buffer-10
          %span.input-group-addon
            %i.fa.fa-key.fa-fw
          = f.label :password, class: 'sr-only'
          = f.password_field :password, autocomplete: 'off', class: 'form-control', placeholder: 'Password'
        = f.submit "Login", class: 'btn btn-success btn-large top-buffer-10'
      = link_to "Forgot your password?", new_password_path(resource_name), class: 'top-buffer-10'
还有我的模特

class User < ActiveRecord::Base
  has_many :orders

  validates :email, presence: true, uniqueness: true

  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :lockable

end
class用户
我在控制器中没有代码或其他自定义代码


Thx预先

根据
@JKen13579
的回答,您需要注意的是,Desive不会以传统方式(使用)存储登录错误消息。相反,Deave使用的是
闪存
,这正是一些人所不喜欢的


有一种方法可以使用教程进入您的应用程序:

对于Deviate,您需要覆盖Deviate处理flash消息的方式。 在“app/helpers/designe_helper.rb”中创建一个名为designe_helper的文件

在文件中,您必须创建一个名为 设计错误消息!,哪个文件的名称告诉我们 设计如何处理flash消息

模块设备帮助器
def设计错误消息!
如果resource.errors.empty为空,则返回“”?
messages=resource.errors.full_messages.map{| msg | content_标记(:li,msg)}.join

html=问同样的问题对我有用。@JKen13579的链接也是我们使用的!Desive没有在RailsThx JKen13579中使用标准的flash对象。这工作正常
module DeviseHelper
  def devise_error_messages!
    return '' if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
    html = <<-HTML
    <div class="alert alert-error alert-block"> <button type="button"
    class="close" data-dismiss="alert">x</button>
      #{messages}
    </div>
    HTML

    html.html_safe
  end
end

<%= devise_error_messages! %>