Javascript未在所有TurboLink页面加载时启动
我有一些javascript没有在所有turbolinks页面加载时启动。如果导航到该页面,javascript将不会启动。如果刷新,javascript将正常工作。在点击刷新后返回页面时,它也可以正常工作 以下是我的看法:Javascript未在所有TurboLink页面加载时启动,javascript,ruby-on-rails,turbolinks,Javascript,Ruby On Rails,Turbolinks,我有一些javascript没有在所有turbolinks页面加载时启动。如果导航到该页面,javascript将不会启动。如果刷新,javascript将正常工作。在点击刷新后返回页面时,它也可以正常工作 以下是我的看法: <%= javascript_pack_tag 'reports' %> <h1>CSV Report</h1> <div class="form-group row"> <div class
<%= javascript_pack_tag 'reports' %>
<h1>CSV Report</h1>
<div class="form-group row">
<div class="col-2 col-form-label col-form-label">Start Date</div>
<div class="col-3"><%= date_field_tag 'start_date', '',class: "form-control" %></div>
</div>
<div class="form-group row">
<div class="col-2 col-form-label">End Date</div>
<div class="col-3"><%= date_field_tag 'end_date', '',class: "form-control" %></div>
</div>
<div class="form-group row">
<div class="col-2"><button id="get_csv" class="btn btn-primary">Get CSV</button></div>
</div>
建议?仔细阅读TurboLink文档,我发现我误解了如何使用事件委派。您不应该将事件委派放入一个eventListener中,侦听turbolinks:load事件。你只需要在站点范围内绑定一次。所以我搬家了
$(document).on('click','#get_csv',function(e){
var start_date = $('#start_date').val();
var end_date = $('#end_date').val();
if ( start_date == '' || end_date == '' || start_date > end_date ) { return; }
document.location = '/reports/csv/download?start_date=' + start_date + '&end_date=' + end_date;
//console.log( '/reports/csv/download?start_date=' + start_date + '&end_date=' + end_date);
});
转到application.js并删除records.js。问题解决了
$(document).on('click','#get_csv',function(e){
var start_date = $('#start_date').val();
var end_date = $('#end_date').val();
if ( start_date == '' || end_date == '' || start_date > end_date ) { return; }
document.location = '/reports/csv/download?start_date=' + start_date + '&end_date=' + end_date;
//console.log( '/reports/csv/download?start_date=' + start_date + '&end_date=' + end_date);
});