【问题标题】:how to redirect second last page如何重定向倒数第二页
【发布时间】:2017-01-17 14:38:14
【问题描述】:

在我的应用程序中,我需要保存 URL 的状态,我需要在其中存储从第二个到最后一个请求的请求路径。我知道request.reffer 返回最后一页URL,但我需要倒数第二页URL,如果没有routes 修改和任何params,我怎么能做到这一点?有可能实现吗?

场景:

假设我现在有一些身份验证页面要结帐。

  1. 用户无需身份验证即可访问产品页面。
  2. 当用户想要购买产品时,他需要登录或注册。
  3. 通过登录我可以实现重定向回产品路径
  4. 但在签名页面上提供了注册链接,因此request.reffer 将在注册后返回登录路径。

我怎样才能重定向到正确的(产品)页面?

欢迎任何好的建议!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 redirect


    【解决方案1】:

    如果我对您的问题的理解正确:您想要一个链接来引导用户,而不是之前查看的页面,而是之前的页面。你可以用一些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 存储上一页并将其转发到下一页(它将是上一页),然后访问它并将其用于重定向。此处的 Rails 指南中解释了 Flash: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
    

    【讨论】:

      【解决方案2】:

      您可以使用 Rails 会话。每当用户访问产品页面时,您应该将产品 ID 保存在会话中。登录后,您可以重定向到存储在会话中的产品页面,该页面始终是最新查看的产品。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-11
        相关资源
        最近更新 更多