Рельсы и бутстрап: Uncaught ReferenceError: jQuery не определен
Я создал простой webapp, интегрирующий бутстрап 3 в приложение rails 3.2.17, следуя qaru.site/info/52073/...
Даже если у меня есть в файле gem:
gem 'jquery-rails'
Я все еще вижу, проверяя мою веб-страницу на хром, ошибка:
Uncaught ReferenceError: jQuery is not defined
Моя страница является "обычной" страницей html в общедоступном каталоге. Может быть, это не "наследует" все активы? Код выглядит так:
<!DOCTYPE html>
<html>
<head>
<title>Bootsrap Test 01</title>
<link rel="stylesheet" href="/css/bootstrap.css">
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
</head>
...
Я еще не пробовал, но думаю, что функция, основанная на javascript, не будет работать.
Ответы
Ответ 1
Предполагая, что после добавления gem 'jquery-rails'
вы выполнили команду bundle install
.
Убедитесь, что в app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap.min // Add it after jquery and jquery_ujs
ИЗМЕНИТЬ
Вам нужно будет явно включить jQuery перед включением /bootstrap.min.js
. Например:
<!DOCTYPE html>
<html>
<head>
<title>Bootsrap Test 01</title>
<link rel="stylesheet" href="/css/bootstrap.css">
<script src="/assets/jquery.js" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
</head>
Ответ 2
Даже если вы правильно задали jquery, вы все еще можете увидеть эту проблему, когда вы создаете встроенный код javascript до инициализации jQuery.
Вы можете обернуть свой код javascript в
document.addEventListener("DOMContentLoaded", function(event) {
//do work with $
});
Или отредактируйте свой код, чтобы не использовать встроенный javascript:)
Ответ 3
на 'application.js' рельсов 5.0.1 по умолчанию
//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
измените его на
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap
* загрузить первый jquery перед загрузкой
Ответ 4
Еще одно место для проверки - <head>
файла application.html.erb
.
Убедитесь, что вы загружаете jQuery перед javascript Bootstrap.
Ответ 5
Я столкнулся с тем же сообщением об ошибке в консоли.
Просто убедитесь, что jQuery находится выше Bootstrap в файле 'assets/javascripts/application.js'
Решение:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require bootstrap