2013-08-21 178 views

回答

6

request.referer让你以前的URL或/如果没有。它通常用于将用户重定向到前一页(link

更多信息here

关于你的问题,它是简单地返回'dashboard'如果request.referer找到。请看下面的例子:

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

但是,你不应该依赖于这个方法给您的用户重定向回。你可以在你的控制器做到这一点,而不是:

redirect_to :back 
+0

但是并不总是依赖request.referer返回。在很多情况下,它返回零并破坏代码。 – techvineet

+0

我会看看@RSB,昨天没有时间;) –

+0

编辑我的答案 –

1

request.referer让你以前的URL或/如果没有

在库中,可以看到:

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

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

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

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