【发布时间】:2014-12-19 00:33:30
【问题描述】:
我使用的是 Devise 3.4.0、Rails 4.1.8。
一旦用户点击sessions#new,输入他们的用户名和密码,然后点击“登录”按钮,设计发布到/users/sign_in。如果身份验证成功,用户将被重定向。但是,如果身份验证失败,我需要在视图中做一些不同的事情。基本上,我们有两种类型的帐户:传统帐户和现代帐户。
现代帐户没问题:它们来自我们的 Rails 系统,所以我们知道错误的登录就是错误的登录。他们肯定有一个帐户,他们只是使用了错误的密码。我想在 Flash 消息(我也在使用)之外向他们显示额外的帮助文本。
但是,我们已将旧帐户导入我们的系统;我们只是没有给他们分配密码。如果他们尝试使用旧帐户登录,我想显示相同的 Flash 消息,但在 Flash 消息之外显示不同的帮助文本。
我正在寻找这样的东西(如果逻辑在视图中;坚持我一分钟)。看到最后的两个条件了吗?
<div class="login_form">
<div class="flash">
<%= render partial: 'layouts/flash_messages', locals: { flash_messages: flash } %>
</div>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<%= f.email_field :email, autofocus: true, placeholder: "Email" %>
<%= f.password_field :password, placeholder: "Password" %>
<%= f.button "Sign in" %>
<% end %>
<% if gave_wrong_password? %>
<a href="/def456">Reset your password here!</a>
<% elsif no_account_exists? %>
<a href="/abc123">Create a new account here!</a>
<% end %>
</div>
基本上,我需要 Devise(或 Warden)来告诉我失败的原因。是否有可供我使用的 Devise 控制器获取信息?
【问题讨论】:
标签: ruby-on-rails devise