【问题标题】:Rails 4 - devise not displaying authentication errorsRails 4 - 设计不显示身份验证错误
【发布时间】:2014-03-19 12:57:54
【问题描述】:

我正在构建一个 rails 4 应用程序,但遇到了障碍。当我进入登录页面并正确输入信息时,一切正常

如果我去登录但我没有输入必填字段之一(姓名、电子邮件等),它会显示一条错误消息,说“请查看以下问题:”但具体的错误消息,例如因为“电子邮件不能为空白”不显示。

在我添加样式之前正确显示的错误..

代码在这里: https://github.com/mikejames386/Black-Fret 我目前正在设计分支。

这是我第一次在 stackoverflow 上提出问题,如果需要任何其他信息,请告诉我。

<div class="container">
    <div id="form_container"><!-- start form_container -->
    <h1>New Artist</h1>
        <%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
          <%= f.error_notification %>

            <h2>Artist or Band Name</h2>
            <div class="form_section">

                <div class="field">
                    <%= f.label :name %>
                    <%= f.text_field :name %>
                </div>
                <br class="clear_both"/>
            </div> <!-- end form_section -->

            <h2>Primary Contact</h2>
            <div class="form_section">

                <div class="field">
                    <%= f.label :primary_first_name, 'First Name'%>
                    <%= f.text_field :primary_first_name %>
                </div>
                <div class="field">
                    <%= f.label :primary_last_name, 'Last Name'%>
                    <%= f.text_field :primary_last_name %>
                </div>
                <div class="field">
                    <%= f.label :email, 'Email'%>
                    <%= f.text_field :email %>
                </div>
                <br class="clear_both"/>
            </div> <!-- end form_section -->

            <h2>Password</h2>
            <div class="form_section">
                <div class="field"><%= f.label :password %>
                <%= f.password_field :password %></div>
                <div class="field"><%= f.label :password_confirmation %>
                <%= f.password_field :password_confirmation %>
            </div>
            <br class="clear_both"/>
            </div>

            <h2>Members</h2>
            <div class="form_section">

                <p>member multi-add goes here</p>
            </div> <!-- end form_section -->


            <%= f.submit "Add Artist", :class =>'btn btn-custom' %>

        <% end %>

</div> <!-- end form_container -->

【问题讨论】:

    标签: ruby-on-rails-4 devise


    【解决方案1】:

    Devise 登录页面上的错误被添加为 flash 消息。

    为了捕获它们,请在app/views/layouts/application.html.erb 中添加以下行

      <% flash.each do |name, msg| %>
        <%= content_tag :div, msg %>
      <% end %>
    

    根据设计文档

    请记住,Devise 使用 Flash 消息让用户知道是否登录 成功或失败。设计期望您的应用程序调用 flash[:notice] 和 flash[:alert] 视情况而定。不要打印 整个闪存哈希,仅打印特定键。在某些情况下, Devise 在 flash 哈希中添加了一个 :timedout 键,这并不意味着 展示。如果您打算打印 整个哈希。

    【讨论】:

      【解决方案2】:

      我的应用程序在 Rails 4 上设置了 Devise,实际上我有一个 Devise User 模型、一个注册控制器(您不需要)和一个 Devise 视图部分。您可能想要遵循本教程https://github.com/plataformatec/devise,如果您向下滚动一点,您将看到配置视图。下面将被放入您的用户模型中,可验证的用于验证电子邮件和密码,这可能是验证无法正常工作的原因,只是一个想法。但我希望本教程能给你一些指导。

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

      安装 Devise 并将其添加到 Gemfile 后,您需要运行生成器:

      rails 生成设计:安装

      安装 Devise 并将其添加到 Gemfile 后,您需要运行生成器: 生成器将安装一个初始化器,它描述了所有设计的配置选项,您必须查看它。完成后,您就可以使用生成器将 Devise 添加到您的任何模型中了:

      rails 生成设计模型

      用应用程序用户使用的类名替换 MODEL,它通常是 User,但也可能是 Admin。这将创建一个模型(如果不存在)并使用默认的设计模块对其进行配置。接下来,您通常会运行 rake db:migrate,因为生成器将创建一个迁移文件(如果您的 ORM 支持它们)。此生成器还将您的 config/routes.rb 文件配置为指向 Devise 控制器。

      配置视图

      我们构建了 Devise 来帮助您快速开发使用身份验证的应用程序。但是,当您需要对其进行自定义时,我们不希望妨碍您。

      由于 Devise 是一个引擎,它的所有视图都封装在 gem 中。这些视图将帮助您入门,但一段时间后您可能想要更改它们。如果是这种情况,您只需要调用以下生成器,它就会将所有视图复制到您的应用程序:

      rails 生成设计:视图

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-20
        • 2013-10-10
        • 2012-02-09
        • 2015-08-08
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多