在Ruby on Rails中保留redirect_to上的referrer

时间:2013-02-15 16:13:19

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

出于网络跟踪的目的,我想在Rails中使用redirect_to时保留HTTP引荐来源。需要这样才能重定向到相应的语言版本。

代码示例:

redirect_to "/#{Option[:locales].first}", :status => 301

如何在不使用查询参数的情况下保留引荐来源?

1 个答案:

答案 0 :(得分:2)

this question中有一些详细介绍的方法。

我首选的方法是在控制器中为store_referrer设置一个before_filter,在我的application_controller中调用这样的方法。然后在您的操作中使用redirect_back_or_default方法来处理重定向。

def store_referrer
  session[:return_to] = request.request_uri
end

def redirect_back_or_default(default)
  redirect_to(session[:return_to] || default)
  session[:return_to] = nil
end

您还可以查看Rails中可用的redirect_to :back方法,或者如果您使用的是Authlogic / Devise,它们都会使用类似的帮助程序来执行相同的操作。

看一下链接的帖子,this提出的troex建议很好。