rails和bootstrap:未捕获的ReferenceError:未定义jQuery

Ago*_*noX 25 jquery ruby-on-rails twitter-bootstrap

我创建了一个简单的webapp,在rails 3.2.17应用程序中集成bootstrap 3,遵循stackoverflow上的这个过程,所以不使用gem而是手动复制相关app目录中的bootstrap文件.

即使我有,在我的宝石文件中:

gem 'jquery-rails'
Run Code Online (Sandbox Code Playgroud)

我仍然可以看到,用chrome检查我的网页,错误:

Uncaught ReferenceError: jQuery is not defined 
Run Code Online (Sandbox Code Playgroud)

我的页面是公共目录中的"普通"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的功能将无法正常工作.

Kir*_*rat 31

假设添加后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
Run Code Online (Sandbox Code Playgroud)

编辑

在包含之前,您需要明确包含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>
Run Code Online (Sandbox Code Playgroud)

  • 好吧,它完全像你说的那样工作.1)请考虑我将href和src更新为以/开头,否则它只能在根文件夹中工作.因此,如果您愿意,可以在答案中进行相同的更新.2)也许值得一提的是jquery和jquery_ujs必须在*bootstrap之前*.新手说. (3认同)

Ser*_*kyy 14

即使你已经正确设置了jquery,你仍然可以在初始化jQuery之前引发内联javascript代码时看到这个问题.

你可以包装你的javascript代码

document.addEventListener("DOMContentLoaded", function(event) { 
  //do work with $
});
Run Code Online (Sandbox Code Playgroud)

或重构您的代码不使用内联JavaScript :)


mpa*_*cia 11

在rails 5.0.1的'application.js'上默认是

//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

改为

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap
Run Code Online (Sandbox Code Playgroud)

*在bootstrap之前加载第一个jquery