我在这些链接中的登录大纲失败后成功实施了自定义重定向...
Devise redirect after login fail https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-when-the-user-can-not-be-authenticated
但是我的静态页面中没有收到相应的Flash消息。我尝试在custom_failure.rb中添加一条flash消息,就像这样...
def redirect_url
login_path
flash[:notice] = "Invalid login or password"
end
......但没有雪茄。理想情况下,我想显示默认设计错误消息。有什么办法吗?
...我也在我的应用程序的静态页面中显示我的登录和注册页面。所以例如在app / views / static_pages / login.html.erb中我有......
<%= form_for("user", :url => user_session_path) do |f| %>
<table>
<tr>
<td><%= f.label :email %></td>
<td><%= f.text_field :email %></td>
</tr>
<td><%= f.label :password %></td>
<td><%= f.password_field :password %></td>
</table>
<%= f.check_box :remember_me %>
<%= f.label :remember_me %><p/>
<%= f.submit 'Sign in' %><p/>
<%= link_to "Forgot your password?", new_password_path('user') %>
<% end %>
测试
答案 0 :(得分:3)
我最终将这些行添加到我的布局文件中,并且它可以正常工作。感谢Mario的帮助。
<%= content_tag(:div, flash[:error], :id => "flash_error") if flash[:error] %>
<%= content_tag(:div, flash[:notice], :id => "flash_notice") if flash[:notice] %>
<%= content_tag(:div, flash[:alert], :id => "flash_alert") if flash[:alert] %>
答案 1 :(得分:2)
在您的自定义失败应用中,您应该能够在respond
方法中设置Flash消息,如下所示:
class CustomFailure < Devise::FailureApp
def redirect_url
login_path
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
flash[:notice] = I18n.t(:unauthenticated, :scope => [ :devise, :failure ])
redirect
end
end
end