在rails上,我将所有的JavaScript文件放入应用程序的js文件中。
//= require jquery
//= require jquery_ujs
//= require dropzone
//= require jquery.cookie
//= require toastr
//VENDOR JS BEGINS
//= require pace/pace.min
//= require modernizr.custom
//= require jquery-ui/jquery-ui.min
//= require boostrapv3/js/bootstrap.min
//= require jquery/jquery-easy
//= require jquery-unveil/jquery.unveil.min
//= require jquery-bez/jquery.bez.min
//= require jquery-ios-list/jquery.ioslist.min
//= require jquery-actual/jquery.actual.min
//= require jquery-scrollbar/jquery.scrollbar.min
//= require bootstrap-select2/select2.min
//= require switchery/js/switchery.min
//= require imagesloaded/imagesloaded.pkgd.min
//= require jquery-isotope/isotope.pkgd.min
//= require classie/classie
//= require codrops-stepsform/js/stepsForm
//= require bootstrap-datepicker/js/bootstrap-datepicker
然后,我调用application.html.erb头部中的javascript作为;
...
<head>
..
<%= javascript_include_tag 'application' %>
..
</head>
...
然后我检查了网站的速度,建议我把这个JS调用发送到body。我知道我应该BTW。但问题出在页面特定的JS代码上。
假设我有一个home.html.erb
,用户可以选择date。所以我把datapicker代码放到这个页面中。
如果我将<%= javascript_include_tag 'application' %>
放在主体的底部,这一次是因为jquery和datepicker还没有加载,所以特定于页面的JS提供了no method error
最好的方法是什么?
发布于 2016-12-21 04:58:14
在body结束标记之前,紧跟在<%= javascript_include_tag 'application' %>
之后
添加<%= yield :page_scripts %>
然后在特定视图中的任意位置(通常在顶部)使用以下命令设置脚本:
<% content_for :page_scripts do %>
<script>alert( "My nice scripts..." );</script>
<% end %>
发布于 2017-07-11 15:00:47
你也可以看看Page-specific Javascript for Rails done right。这值得一看!
安装之后。让我们看一下示例代码。
var ArticlesController = Paloma.controller('Articles');
ArticlesController.prototype.edit = function(){
// Handle edit article
};
这意味着如果你有文章控制器的编辑操作页面。那么只有javascript会被触发。这不会在其他控制器操作中触发。
https://stackoverflow.com/questions/41238020
复制相似问题