在我的应用程序中,我需要保存URL的状态,其中我需要存储倒数第二个请求的请求路径。我知道request.reffer
会返回上一页URL
,但我需要倒数第二页的网址,如果没有routes
修改且没有任何params
,我该如何实现这一目标?是否有可能实现这一目标?
情景:
假设我现在有一些验证页面可供退房。
request.reffer
将返回登录路径。如何重定向到正确的(产品)页面?
欢迎任何好的建议!
答案 0 :(得分:4)
如果我正确理解您的问题:您需要一个指向用户的链接,而不是之前查看的页面,而是之前的页面。您只需使用一些javascript即可实现此目的:
<%= link_to "Double Back", "javascript:history.go(-2);" %>
这样做是使用浏览器的历史记录来及时跳回两个URL。它相当于在浏览器上单击两次后退按钮。
我最近解决了一个类似的问题,一个页面在提交表单后有时会指向自己。发生这种情况时,:back
按钮将变得无用,因为用户所在的最后一页是同一页面。我使用以下代码解决了这个问题:
<%= link_to "Back", "javascript: if (document.referrer == '#{request.original_url}'){history.go(-2);} else {history.go(-1);}" %>
这表示“如果上一页是同一页面,请跳回两页,否则,跳回上一页”
再次阅读您的问题,听起来好像您正在尝试将Rails中的上一个页面用于重定向?如果是这种情况,上面的解决方案将不起作用,但您可以使用Flash存储上一页并将其转发到下一页(它将是上一页的前一页),然后访问它并将其用于重定向。 Flash在Rails指南中有解释:http://guides.rubyonrails.org/action_controller_overview.html#the-flash
我想解决方案看起来像是:
first controller action
flash[:previous_page] = "#{request.original_url}"
end
second controller action
redirect_to flash[:previous_page]
end
答案 1 :(得分:0)
您可以使用Rails会话。每当用户访问产品页面时,您都应该在会话中保存产品ID。登录后,您可以重定向到会话中存储的产品页面,该产品页面始终是最新查看的产品。