设计重定向:查看页面A - >注册/在 - >重定向回到页面A.

时间:2011-12-20 20:29:47

标签: ruby-on-rails ruby-on-rails-3 devise

我正在尝试弄清楚如何让用户在通过Devise注册或登录网站后返回原始页面。

例如:用户正在查看清单A.用户点击“注册”,成功注册(无确认)。但是,它们不是被重定向回根目录,而是返回到列表A。

我以前通过本地身份验证执行此操作,方法是将原始URL存储在会话中,然后成功登录,重定向到存储的URL,或者如果它为null,则继续执行默认页面。

我可以用Devise做同样的事情,还是有一种实现相同目标的首选方式?

答案

在我的脑子里乱了几个小时,然后张贴了一个SO问题,它在提交问题后几乎立刻就打了我。我是这样做的:

在我的应用程序控制器中,我嗅探查看URL中是否存在return_to参数。如果有,我在会话中设置。

然后,我在应用程序控制器中覆盖after_sign_in_path_for以重定向到存储的会话值或root_path。

这是我的application_controller.rb的相关部分:

class ApplicationController < ActionController::Base

  before_filter :check_for_manual_return

  def check_for_manual_return
    session[:return_to] = params[:return_to] if !params[:return_to].nil?  
  end

  def after_sign_in_path_for(resource)
    return session[:return_to] || root_path
  end   
end

0 个答案:

没有答案