【问题标题】:'Back' browser action in Ruby on RailsRuby on Rails 中的“返回”浏览器操作
【发布时间】:2010-10-11 21:08:34
【问题描述】:

是否可以从 Rails 的“返回”链接调用“返回”浏览器功能?

【问题讨论】:

    标签: ruby-on-rails browser


    【解决方案1】:

    使用

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

    这在 RDoc here 中有具体说明

    这会生成一些 Javascript 来向后导航。我刚刚测试了它,它可以工作。

    【讨论】:

    • 它不像后退按钮那样“完全”工作。所有输入的表单数据都被清除。
    • 是的,我觉得这只会让大多数人真正做到一半。如果您真的想模拟后退按钮,那么您还希望之前的所有参数保持不变。
    • request.referer 存在时,这不会使用javascript:history.back()
    • 如果您在两个页面上都有这个后退按钮,它将导致用户在这两个页面之间来回切换。它实际上并没有遍历历史。
    • 这可能会在表单提交失败的情况下以及类似性质的情况下造成用户体验的噩梦,这些情况会导致用户期望返回按钮带来它们。
    【解决方案2】:

    在 Rails 3 及更早版本中:

    link_to_function "Back", "history.back()"
    

    在 Rails 4 中,此方法已被删除。请参阅 Andreas 的评论。

    【讨论】:

    • 请注意,link_to_function 在 Rails 4.1 中已被贬低。更多信息:stackoverflow.com/questions/14324919/…
    • 如果您仍然在 Rails 4.1+ 中尝试一下,请享受 undefined method 'link_to_function' for #&lt;#&lt;Class
    • 我目前使用的是 Rails 4.2.5.1。我发现我需要在选项哈希中发送 Javascript,如 onclick: 'history.back(),而不是在 URL 参数中(这不起作用,至少在我用 Firefox 尝试时)。
    【解决方案3】:

    这适用于 Rails 5.1 和 Turbolinks。

    link_to 'Back', 'javascript:history.back()'
    

    【讨论】:

      【解决方案4】:

      在 Rails 4.2 中,我可以使用它:

      <a href="javascript:history.back()">Refine Search</a>
      

      我从@cpm’s answer 偷了这个,除了link_to("Refine Search", :back) 没有做我想要的工作,而粘贴到生成的代码&lt;a href="javascript:history.back()"&gt;Refine Search&lt;/a&gt; 做得很好。

      【讨论】:

      • 是的,link_to("Refine Search", :back) 将只保存最后一个操作,不带任何参数,然后将您放回到您的解决方案使用 js 的位置
      • @ohhh 它对我也不起作用:未定义的方法 `stringify_keys' for :back:Symbol
      • @facundofarias,这听起来不相关,你的 link_to 的确切语法是什么?
      • @ohhh 它是:link_to("Test", :back)
      • @facundofarias,你定义。没有通过它?
      【解决方案5】:

      您可以使用link_to("Hello", :back) 生成&lt;a href="javascript:history.back()"&gt;Hello&lt;/a&gt;

      【解决方案6】:

      这与浏览器后退按钮的工作方式类似

      &lt;%= link_to 'Back', 'javascript:history.go(-1);' %&gt;

      【讨论】:

        【解决方案7】:

        注意来自用户rthboundthis comment!正如他所指出的,带有符号:backlink_to 并不总是像用户单击浏览器的后退按钮一样生成“真实”的后退事件。也可以是重新提交加载当前视图的操作。

        documentation for Rails 4.2.6 表示 link_to:back 符号:

        使用:back 符号而不是选项哈希将生成指向 引荐来源网址(如果没有引荐来源网址,则将使用 JavaScript 反向链接代替引荐来源网址 存在)。

        【讨论】:

          【解决方案8】:

          如果你喜欢我不想要link_to "cancel", :back 的行为,你可以实现一个辅助方法,它可以链接到记录索引路径或显示路径。 (即teams_pathteam_path(@team)

          module CancelFormButtonHelper
            def cancel_button(record)
              index_path = record.class.to_s.pluralize.downcase + "_path"
              path = record.persisted? ? record : eval(index_path)
          
              link_to "Cancel", path
            end
          end
          

          然后可以在表单中用作&lt;%= cancel_button @team %&gt;

          【讨论】:

            【解决方案9】:

            可以使用js函数window.history.back()

             = link_to 'Back', onclick: "window.history.back();"
            

            【讨论】:

              【解决方案10】:

              导轨

              使用

              link_to_function "Back", "history.back()"
              

              似乎与点击浏览器中的后退按钮完全一样。当您返回时,所有输入的表单数据仍然存在。

              【讨论】:

                猜你喜欢
                • 2012-09-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-05-01
                • 2013-09-06
                • 2013-06-15
                相关资源
                最近更新 更多