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!") });