gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:38:32 24 4
gpt4 key购买 nike

我使用以下代码通过搜索页面上的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com