Rails 4 - 设计不显示身份验证错误

时间:2014-03-17 17:57:34

标签: ruby-on-rails-4 devise

我正在构建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 -->

2 个答案:

答案 0 :(得分:0)

我用我的应用程序在rails 4上设置了Devise,我实际上有一个Devise用户模型,一个注册控制器(你不需要)和一个Devise视图部分。您可能希望按照本教程https://github.com/plataformatec/devise进行操作,如果向下滚动一下,您将看到配置视图。下面的内容将放入您的用户模型中,而有效表格则用于验证电子邮件和密码,这可能就是为什么验证无法正常运行的原因。但我希望本教程能为您提供一些指导。

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

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

rails generate devise:install

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

rails生成设计模型

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

配置视图

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

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

rails generate devise:views

答案 1 :(得分:0)

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

要捕获它们,请在app/views/layouts/application.html.erb

中添加以下行
  <% flash.each do |name, msg| %>
    <%= content_tag :div, msg %>
  <% end %>

根据设计文档

  

请记住,如果登录,Devise会使用Flash消息让用户知道   成功或失败。 Devise希望您的应用程序可以打电话   闪光[:通知]和闪光[:警告]视情况而定。不要打印   整个flash哈希,只打印特定的键。在某些情况下,   Devise为闪存哈希添加了一个:timedout键,这不是意思   显示。如果您打算打印,请从哈希中删除此密钥   整个哈希。

相关问题