javascript - 使用浏览器历史记录时,Rails link_to Remote True 问题

标签 javascript ruby-on-rails ajax

我使用以下代码通过搜索页面上的 JS 请求获取数据

<%= link_to 'All', '/search?type=all', id: 'active', remote: true %>
<%= link_to 'Photographers', '/search?type=photographers', remote: true %>

一切正常,我正在按预期获取数据。但是,当我点击其他链接,然后点击后退按钮(由浏览器提供)时,它会在空白页面上向我显示 JS 请求数据,而不是返回到搜索页面。

是否有任何解决方法或解决方案?

在routes.rb中

resources :search, only: [:index]

在搜索 Controller 中

def index
  // search processing

  respond_to do |format|
    format.html
    format.js
  end
end

搜索/index.js.erb

$('#search-area').html("<%= j render partial: 'search_area' %>");

我正在使用 Rails 5.0 和 Puma

最佳答案

正如我所想。后退按钮转到最后一个请求,即 JS 文件。它所做的只是渲染部分内容,但由于它没有基本模板,因此您得到的只是部分内容的搜索数据。

到目前为止,我让 AJAX 部分工作的方法是在 .html.erb 文件中添加一个 div 标记(或者任何带有 ID 的内容)。例如,来自具有 AJAX 可排序表的项目:

index.html.erb

...
<div class="card card-block" id="article-index">
    <%= render 'indextable' %>
</div>
...

index.js.erb

$("#article-index").html("<%= escape_javascript(render("indextable")) %>");

两者都引用我想要呈现的表数据的部分内容。技巧就在 .js.erb 文件中,使用将 innerHTML 设置为 Rails escape_javascript(render..) 调用的语法。这样,返回导航将从另一个页面返回到搜索结果页面。

尝试一下,让我知道它是否有效。您可能会获得呈现的搜索结果页面的 HTML 模板,但没有任何数据。 AJAX 通常不适用于浏览器后退按钮。

关于javascript - 使用浏览器历史记录时,Rails link_to Remote True 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39145847/

相关文章:

ruby-on-rails - Rails 4 session cookie 未设置

javascript - 使用 AJAX 的数据表中的子行

javascript - 我怎样才能访问JavaScript中的对象元素?

javascript - 在 Discord 的登录页面中为 "Wobbly Canvas"设置动画?

ruby-on-rails - 是否可以验证 Gemfile.lock 中的所有 gem 是否都存在于 https ://rubygems. org?

javascript - 使用具有两个不同 JSON 端点的 Highcharts drilldown 绘制条形图

php - 将 jQuery $.post 返回数据设置为 JavaScript 变量

javascript - 如何向动态创建的元素添加点击功能?

javascript - 使用 UIWebView 显示和观看日志

mysql - Rails Activerecord + MySQL 查询没有给出我期望的结果