链接回到表单之前访问的页面
我有一个列表页面,然后是表单,然后是感谢页面。 我需要在感谢页面上放置一个链接,该链接将用户带回到他们所在的页面之前,该表单始终有所不同。 我试过用这个:
= link_to "Back", :back
但这只会让他们回到上一页,所以表格。
那么,您可以在表单页面中设置一个方法来收集该URL。 基本思想是使用自定义会话变量来存储以前的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]
这应该能够适合你的情况,两页前的前一个url。
免责声明:未经核实。 只有想法。
加
会话属于控制器。 它不是您可以直接在视图中使用的帮助程序。 您需要在控制器中定义实例变量,然后您可以在视图中使用它。 像这样
# Controller @back_url = session[:my_previous_url] # View <%= link_to "Back", @back_url %>
试试这个
<%= link_to 'Back', url_for(:back) %> # if request.env["HTTP_REFERER"] is set to "http://www.example.com" # => http://www.example.com
这里有更多细节。
您可以使用Rails API中的示例:
<%= link_to "Back", :back %>
用于link_to的Rails API文档
使用:back符号而不是选项哈希将生成指向引用者的链接(如果不存在,则将使用JavaScript反向链接代替引用者)。
既然你说,它可能在表单之前是不同的页面,可能request_url可以帮助你。 你可以将你的request_url保存在一个参数中并重定向到param_url(如果有的话)。
这是您可以参考的来源。 http://programming-tut.blogspot.com/2010/06/ruby-on-rails-request-url.html
如果在Controller中使用,您可以直接使用如下:
def some_action # some code redirect_to :back end
这对我有用:
在上一个视图的控制器中:
cookies[:original_referrer] = request.orignal_url
使用原始页面的URL在浏览器上设置cookie
在当前视图的控制器中:
redirect_to cookies[:original_referrer]
- 如何在我的Sinantra应用程序/环境下运行Rake任务?
- ActiveRecord :: StatementInvalid:PG ::错误:错误:无法在Heroku中的只读事务错误中执行UPDATE
- 如何从rails应用程序上的ruby获取mongodb数据库和集合列表的列表
- 如何从ApplicationController(Rails)访问cookie
- 已validation的电子邮件不通过Heroku / Mailgun发送
- 在Rails中,为什么我的邮件主体只在我的测试中空了?
- 使用带有表单和validation包含的数组的Rails
- 需要帮助来理解`has_and_belongs_to_many`
- 用户的Rails模型结构