重定向设计登录失败 - 在其他控制器视图上设计登录表单时

时间:2018-03-14 06:42:36

标签: ruby-on-rails devise

一个小背景故事:

我想在我的控制器的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)

0 个答案:

没有答案