只有document.ready代码在Rails中的页面重新加载时运行

时间:2016-03-15 01:48:00

标签: ruby-on-rails turbolinks

我正在使用this tutorial在我的Rails应用中加载特定于页面的JavaScript。我的文件结构如下所示:

Observable

我使用Map预编译资产,文件app/assets/javascripts/ ├── application.js ├── charts.coffee ├── dashboard │   └── settings.js ├── dashboard-bundle.js └── static_pages.coffee 只包含行config.assets.precompile += %w( *-bundle.js )。然后,在我想要加载JavaScript的页面上,我将JavaScript包含在dashboard-bundle.js中。

以下是我的//= require_tree ./dashboard/文件的哪个部分的示例:

= javascript_include_tag 'dashboard-bundle'

当我第一次从另一个页面加载页面时,两个警报都会在适当的时间出现;第一次页面加载,第二次单击settings.js按钮。

但是,当我重新加载页面而不首先转到另一个页面时,只有第一个警报正常工作。单击按钮时,不会显示警报。

我已经尝试安装jQuery Turbolinks,但这并没有解决问题。

1 个答案:

答案 0 :(得分:1)

我认为在绑定#renderChart1方法之后,.click()已添加到DOM中,您应该转到document.ready以确保该元素已加载到DOM中,如下所示:

$(document).ready(function(){
  alert('Page and Javascript loaded!');
  $('#renderChart1').click(function() {
    alert('You want to edit options for chart1!');
  });
});