Rails 4:JQuery .ready not Firing

stackoverflow上没有解决方案似乎适用于我的问题,尽管我可能遗漏了一些基本的东西。 我似乎无法在我的Rails 4应用程序中启动JQuery的.ready函数。

我在custom.js中尝试了以下解决方案:

1。

$(document).on('ready page:load', function () { alert("hello, world") }); 

2。

 var ready; ready = function() { alert("Hello, world!") }; $(document).ready(ready); $(document).on('page:load', ready); 

3。

 $(function() { alert("Hello, world!") }); 

4。

 window.onload=function(){ alert("Hello, javascript onload!") }; 

我的application.js清单看起来像这样:

 //= require jquery //= require jquery.turbolinks //= require jquery_ujs //= require custom //= require plugins //= require turbolinks //= require_self //= require_tree . 

我的gemfile看起来像这样:

 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' 

控制台日志显示:

  TypeError: $ is not a function application.js:22 

生成的源包括:

         

如果我将它放入custom.js,它的工作原理:

  alert("Hello, world!"); 

谢谢您的帮助!

首先,我不建议将任何js代码添加到application.js因为这是一个清单文件。 只需创建一个新文件,例如core.js.coffee并尝试

 $ -> alert 'Hello World!' 

Rails中的链接获取所有js / coffee文件,并将它们放入生产中的压缩和缩小的单个文件中。

我想出了一个解决方案。 看起来我在assets文件夹中包含的jquery.js文件与jquery gem冲突。 我删除了jquery文件,并将语法更改为:

 $( document ).ready(function() { alert("Hello, world!") });