链接返回到表单之前访问的页面

时间:2013-04-25 11:10:29

标签: ruby-on-rails url redirect request refer

我有一个列表页面,然后是表单,然后是感谢页面。我需要在感谢页面上添加一个链接,该链接将用户带回到他们所在的页面之前,该表单始终有所不同。我试过用这个:

= link_to "Back", :back

但这只会让他们回到上一页,所以表格。

6 个答案:

答案 0 :(得分:53)

试试这个

<%= link_to 'Back', url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com

here is more details.

答案 1 :(得分:18)

好吧,您可以在表单页面中设置一个方法来收集该网址。基本思想是使用自定义会话变量来存储以前的URL并将其保留到下一个会话。

假设您的表单的操作是SomeController#new,那么

class SomeController < ApplicationController
  after_filter "save_my_previous_url", only: [:new]

  def save_my_previous_url
    # session[:previous_url] is a Rails built-in variable to save last url.
    session[:my_previous_url] = URI(request.referer || '').path
  end

end

然后在感谢页面中,您可以通过

获取此my_previous_url
 session[:my_previous_url]

这应该能够适合你的情况,两页前的前一个网址。

免责声明:未经核实。只有想法。

添加

会话属于控制器。它不是您可以直接在视图中使用的帮助程序。您需要在控制器中定义实例变量,然后您可以在视图中使用它。喜欢这个

# Controller
@back_url = session[:my_previous_url]

# View
<%= link_to "Back", @back_url %>

答案 2 :(得分:6)

您可以使用Rails API中的示例:

<%= link_to "Back", :back %>

Rails API Doc for link_to

  

使用:back符号而不是选项哈希将生成指向引用者的链接(如果不存在,则将使用JavaScript反向链接代替引用者)。

答案 3 :(得分:1)

既然你说,在表单之前它可能是不同的页面,可能request_url可以帮助你。你可以将你的request_url保存在一个参数中,如果有的话,可以重定向到param_url。

这是您可以参考的来源。 http://programming-tut.blogspot.com/2010/06/ruby-on-rails-request-url.html

答案 4 :(得分:0)

如果在Controller中使用,您可以直接使用,如下所示:

def some_action
  # some code
  redirect_to :back
end

答案 5 :(得分:0)

这对我有用:

在上一个视图的控制器中:

cookies[:original_referrer] = request.orignal_url

使用原始网页的网址在浏览器上设置Cookie

在当前视图的控制器中:

redirect_to cookies[:original_referrer]