【发布时间】:2020-04-05 21:35:09
【问题描述】:
所以我遇到了这个问题,我的服务器确实从客户端的请求中检索了正确的数据,并将这些数据发送到浏览器,在那里我可以清楚地看到它对浏览器可用(CTRL+SHIFT+C > 网络 >我的请求)。但是,浏览器不会刷新。所以我现在看到的是前一页的数据。经过一番搜索,我确定它是由 TurboLinks 引起的,然后我尝试将其禁用为完成 here 或 here。然而浏览器仍然不会刷新并显示新获取的数据。我做的最后一件事是我的项目目录中的grep -r turbolink *,它给了我以下信息:
app/views/layouts/_dashboard_menu_certified.html.erb: <%= submit_tag("Apply", {'data-turbolinks': false}) %>
log/development.log: 21: <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
node_modules/@rails/webpacker/README.md:<%= javascript_packs_with_chunks_tag 'calendar', 'map', 'data-turbolinks-track': 'reload' %>
node_modules/@rails/webpacker/README.md:<script src="/packs/vendor-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/README.md:<script src="/packs/calendar~runtime-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/README.md:<script src="/packs/calendar-1016838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/README.md:<script src="/packs/map~runtime-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/README.md:<script src="/packs/map-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/CHANGELOG.md:<%= stylesheet_packs_with_chunks_tag 'calendar', 'map', 'data-turbolinks-track': 'reload' %>
node_modules/@rails/webpacker/CHANGELOG.md:<%= javascript_packs_with_chunks_tag 'calendar', 'map', 'data-turbolinks-track': 'reload' %>
node_modules/@rails/webpacker/CHANGELOG.md:<script src="/packs/vendor-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/CHANGELOG.md:<script src="/packs/calendar~runtime-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/CHANGELOG.md:<script src="/packs/calendar-1016838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/CHANGELOG.md:<script src="/packs/map~runtime-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
node_modules/@rails/webpacker/CHANGELOG.md:<script src="/packs/map-16838bab065ae1e314.js" data-turbolinks-track="reload"></script>
有什么我错过的吗? 干杯。
编辑:
<div class="col-sm-6 card">
<% @res.each do |tool, histories| %>
<div class="chart">
<div class="card-header">
<div class="nav nav-pills card-header-pills">
<%= tool %>
</div>
</div>
<div class="card-body">
<div id="<%= tool %>" class=""></div>
<script>
new Morris.Line({
element: "<%= tool %>",
data: [
<% histories.each do |history| %>
{ date: '<%= history.date %>', value: <%= history.uptodate %>, value2: <%= history.outdated %>, value3: <%= history.error %>},
<% end %>
],
xkey: 'date',
ykeys: ['value', 'value2', 'value3'],
labels: ['UpToDate', 'OutDated', 'Error']
})
</script>
</div>
</div>
<% end %>
</div>
【问题讨论】:
-
请解释一下:您是否单击链接开始执行检索新数据的操作?它是一些javascript代码吗?您的控制器代码看起来如何?你在渲染什么(完整的页面视图,部分视图,你如何更新屏幕的一部分?),你使用的是哪个版本的 rails?
-
我有这个
<%= form_with(url: "my_controller", method: "get") do %>和<%= submit_tag("Apply", {'data-turbolinks': false}) %>。所以 submit_tag 是触发查询的那个,因此如果来自表单的查询无效,控制器要么用相应的数据填充数组,要么渲染模板。我正在渲染的是一个部分页面,应该显示新获取的数据。正如问题所说,我正在运行rails 6。 -
所以如果数据有效,它会填充一个数组,你如何渲染/返回这个?它仍然应该呈现一个视图以返回数据。你能告诉我们那个观点吗?您是否使用某种 javascript 框架来呈现数组/列表客户端?
-
我以与上一页相同的方式呈现它,并使用之前的数据。是的,我正在使用 Morris.js 从数据中创建图表。
-
对,你这么说好像我知道你说的“上一页有上一个数据”是什么意思。那是另一种形式吗?另一个表格的另一个页面?您是否有另一个带有
form_with的页面有效?然后寻找差异?form_with默认为remote,可能需要添加local: true选项?
标签: javascript ruby-on-rails turbolinks disable