Rails 4: JQuery .ready Not Firing
在这里,关于stackoverflow的任何解决方案似乎都无法解决我的问题,尽管我可能会缺少一些基本知识。我似乎无法在Rails 4应用程序中触发JQuery的.ready函数。
我在custom.js中尝试了以下解决方案:
1.
1 2 3 | $(document).on('ready page:load', function () { alert("hello, world") }); |
2.
1 2 3 4 5 6 7 8 | var ready; ready = function() { alert("Hello, world!") }; $(document).ready(ready); $(document).on('page:load', ready); |
3.
1 2 3 | $(function() { alert("Hello, world!") }); |
4.
1 | window.onload=function(){ alert("Hello, javascript onload!") }; |
我的application.js清单如下所示:
1 2 3 4 5 6 7 8 | //= require jquery //= require jquery.turbolinks //= require jquery_ujs //= require custom //= require plugins //= require turbolinks //= require_self //= require_tree . |
我的gemfile看起来像这样:
1 2 3 4 5 6 7 8 9 10 11 12 | gem 'rails', '4.0.0' gem 'jquery-rails' gem 'jquery-turbolinks' gem 'turbolinks' gem 'jbuilder', '~> 1.2' gem 'bootstrap-sass', '2.0.0' gem 'bcrypt-ruby', '3.0.1' gem 'faker', '1.0.1' gem 'will_paginate', '3.0.3' gem 'bootstrap-will_paginate', '0.0.6' gem 'pg' gem 'devise' |
控制台日志显示:
1 | TypeError: $ is not a function application.js:22 |
生成的来源包括:
1 2 3 4 5 6 7 | <script src="/assets/jquery.js?body=1"> <script src="/assets/jquery.turbolinks.js?body=1"> <script src="/assets/jquery_ujs.js?body=1"> <script src="/assets/custom.js?body=1"> <script src="/assets/plugins.js?body=1"> <script src="/assets/turbolinks.js?body=1"> <script src="/assets/application.js?body=1"> |
如果我将其放入custom.js,它将起作用:
1 | alert("Hello, world!"); |
谢谢您的帮助!
首先,我不建议将任何js代码添加到
1 | $ -> alert 'Hello World!' |
Rails中的链轮将您的所有js / coffee文件放入生产中的压缩且缩小的单个文件中。
我想出了一个解决方案。看来我包含在Assets文件夹中的jquery.js文件与jquery gem冲突。我删除了jquery文件,并将语法更改为:
1 | $( document ).ready(function() { alert("Hello, world!") }); |