request.referer有什么用?

时间:2013-08-21 10:25:33

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

我想知道以下代码的作用。 request.referer有什么用?

@board = request.referer['dashboard'] if request.referer

2 个答案:

答案 0 :(得分:6)

request.referer为您提供以前的网址,如果没有,则为/。它通常用于将用户重定向回上一页(link

更多信息here

关于您的问题,如果在'dashboard'中找到,则只返回request.referer。请看以下示例:

> str = "hello world!"
 => "hello world!"
> str['hello']
 => "hello"
> str['lo wo']
 => "lo wo"
> str['foo']
 => nil

但是,您不应该依赖此方法重定向您的用户。您可以在控制器中执行此操作:

redirect_to :back

答案 1 :(得分:1)

request.referer为您提供以前的网址,如果没有,则为/

在图书馆,你可以看到:

def referer    
  @env['HTTP_REFERER'] || '/'
end

您可以使用referer技术,但是在输入表单时而不是在提交表单时必须捕获它。像这样:

<%= hidden_field_tag :referer, (params[:referer] || request.env['HTTP_REFERER']) %>

然后,您可以在控制器中使用params[:referer] redirect back