Javascript未在所有TurboLink页面加载时启动

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没有在所有turbolinks页面加载时启动。如果导航到该页面,javascript将不会启动。如果刷新,javascript将正常工作。在点击刷新后返回页面时,它也可以正常工作

以下是我的看法:

<%= 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);
    });