一个小背景故事:
我想在我的控制器的show方法上添加设计登录表单。它就像这样
app/views/projects/show.html.erb
<p><%= @project.name %> </p>
<p><%= @project.description %> </p>
<% if user_signed_in? %>
// show link to download files
<% else >
<p> please login to view files </p>
// show devise signin form
<% end %>
我希望用户重定向到当前页面(显示视图)登录是成功还是失败。
要解决登录重定向失败的问题 - 我在lib目录中设置了custom_failure.rb,设置了Devise初始化程序,并设置了rails config.autoload_paths。
class CustomFailure < Devise::FailureApp
def redirect_url
url = Rails.application.routes.recognize_path(request.referer)
if url[:controller] == "projects" && url[:action] == "show"
stored_location_for(resource)
else
super
end
end
def respond
if http_auth?
http_auth
else
redirect
end
end
end
我的问题是我不想在custom_failure.rb中使用request.referer。
url = Rails.application.routes.recognize_path(request.referer)
因为人们说request.referer它不稳定。
任何想法?
编辑:实际上我的问题与此post here非常类似。如果登录失败,他希望在该帖子中重定向到网站#index,而如果sign_in失败,我想重定向到当前页面。 rails(5.1.2)devise(4.4.1)