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
生成的来源包括:
<script src="/assets/jquery.js?body=1"></script>
<script src="/assets/jquery.turbolinks.js?body=1"></script>
<script src="/assets/jquery_ujs.js?body=1"></script>
<script src="/assets/custom.js?body=1"></script>
<script src="/assets/plugins.js?body=1"></script>
<script src="/assets/turbolinks.js?body=1"></script>
<script src="/assets/application.js?body=1"></script>
如果我把它放到custom.js中,它可以工作:
alert("Hello, world!");
感谢您的帮助!
答案 0 :(得分:2)
首先,我不建议将任何js代码添加到application.js
,因为这是一个清单文件。只需创建一个新文件,例如core.js.coffee
并尝试
$ -> alert 'Hello World!'
Rails中的链接获取所有js / coffee文件,并将它们放入生产中的压缩和缩小的单个文件中。
答案 1 :(得分:1)
我找到了解决方案。看起来我在assets文件夹中包含的jquery.js文件与jquery gem冲突。我删除了jquery文件,并将语法更改为:
$( document ).ready(function() { alert("Hello, world!") });