我正在尝试在我的 application.js.coffee
中做类似的事情 list 文件
#= require jquery.min
#= require jquery.turbolinks
#= require jquery_ujs
#= require private_pub
#= require turbolinks
#= require ckeditor/init
#= require bootstrap
$ ->
if $('body').hasClass 'page'
#= require jquery.parallax-1.1.3
#= require jquery.scrollTo.min
#= require jquery.easing.1.3
#= require waypoints.min
#= require jquery.mousewheel
#= require jpreLoader
#= require custom
#= require maps
#= require jquery.flexisel
else
#= require jquery.slimscroll.min
#= require morris
#= require lanceng
#= require editable/bootstrap-editable
#= require editable/rails
#= require jquery.countdown
这不正确吗?我想添加页面特定的 JS,并且我确信我已经添加了 <%= controller_name %>
也在 body 类中,这是我用于页面特定 CSS 的方法。
但是,在我的源代码中我只能看到以下内容:
<!-- Javascript -->
<script data-turbolinks-track="true" src="/assets/jquery.min.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/jquery.turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/jquery_ujs.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/private_pub.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/ckeditor/init.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/ckeditor/ckeditor.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/bootstrap.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/application.js?body=1"></script>
这个方法不对吗?如果不是那么这样做的方法是什么?
最佳答案
#= require
语句是在代码在页面上运行之前在服务器端运行的处理器,因此即使 jQuery 就绪的 $ ->
函数也无法工作,这是为什么您没有看到页面上包含的任何要求。
我必须在这里停下来,只是说,让 Rails 资源管道将您的 javascript 资源连接并缩小到一个文件中并同时提供所有资源,比让每个页面加载不同的 javascript 好得多文件。原因是,对于用户来说,下载 1 个大文件并将其缓存比每次请求都下载多个文件要好。在移动平台上尤其如此。我强烈建议重新考虑你的策略。
进一步阅读:
关于javascript - 在 Rails 4.0.1 中添加页面特定的 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24123775/