Javascript $未定义,在Rails中使用Select2插件时发生未捕获引用错误

Javascript $未定义,在Rails中使用Select2插件时发生未捕获引用错误,javascript,jquery,ruby-on-rails,haml,jquery-select2,Javascript,Jquery,Ruby On Rails,Haml,Jquery Select2,我正在尝试使用Select2插件将搜索栏添加到我的选择框中 我在查看页面控制台时遇到以下错误: 未捕获引用错误:$未定义 在这里搜索不同的问题让我相信,之所以会发生这种错误,是因为在调用脚本之前没有包含或放置jQuery javascript。但我仍然找不到一个办法让它工作。如何修复此错误并使select2插件正常工作 下面是application.js文件: //= require jquery //= require jquery_ujs //= require jquery-ui //=

我正在尝试使用Select2插件将搜索栏添加到我的选择框中

我在查看页面控制台时遇到以下错误:

未捕获引用错误:$未定义

在这里搜索不同的问题让我相信,之所以会发生这种错误,是因为在调用脚本之前没有包含或放置jQuery javascript。但我仍然找不到一个办法让它工作。如何修复此错误并使select2插件正常工作

下面是application.js文件:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery-fileupload/basic
//= require jquery-fileupload/vendor/tmpl
//= require select2
//= require tinymce
//= require turbolinks
//= require_tree
我曾尝试以多种不同的方式重新排列application.js文件中select2的顺序,但没有成功。我尝试确保jQuery在select2之前加载

以下是index.html.haml文件:

%select{:id => "test"}
    - @lamps.each do |lamp|
        %option{:value => "1"}= lamp.brand + ' ' + lamp.category + ' ' + lamp.lamptype + ' (' + lamp.cct.to_s + 'K)'

:javascript
    $(document).ready(function() { $("#test").select2(); });
!!! 5
%html
  %head
    %title= t('.lspdd_light_spectral_power_dis')
    %meta{:name => "viewport", :content=>"width=device-width, user-scalable=no"}
    = stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true
    = javascript_include_tag "application", "data-turbolinks-track" => true, :defer => "defer"
    = javascript_include_tag "d3.min.js", :defer => "defer"
    = csrf_meta_tags
以下是application.html.haml文件:

%select{:id => "test"}
    - @lamps.each do |lamp|
        %option{:value => "1"}= lamp.brand + ' ' + lamp.category + ' ' + lamp.lamptype + ' (' + lamp.cct.to_s + 'K)'

:javascript
    $(document).ready(function() { $("#test").select2(); });
!!! 5
%html
  %head
    %title= t('.lspdd_light_spectral_power_dis')
    %meta{:name => "viewport", :content=>"width=device-width, user-scalable=no"}
    = stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true
    = javascript_include_tag "application", "data-turbolinks-track" => true, :defer => "defer"
    = javascript_include_tag "d3.min.js", :defer => "defer"
    = csrf_meta_tags
其他信息:

Rails版本:4.0.3 ruby 1.9.3p484 2013-11-22修订版43786[x86_64-linux] 谢谢大家!

编辑1:

添加网络开发工具显示的信息的屏幕截图

如果我理解正确,application-ea826f14bc5ea6f6976b187ce8d3008e.js文件包括application.js文件中提到的所有内容

如果已经手动包含所有脚本,则不要使用//=require\u树。这可能是错误的原因。删除此字符串并尝试重新加载页面

p、 我还认为您使用的sintax不正确

//= require_tree
正确的版本包含点

//= require_tree .
p、 附言。 不是关于你的主要问题,但是你使用的是旧版本的ruby。检查更新的


还有一件更重要的事我以前没提过。您正在使用defer=defer属性来解除主脚本加载。内联javascript在主脚本之前加载的页面上键入的内容查看浏览器开发工具网络,查看实际加载的内容和when@charlietfl我刚刚添加了网络information@kpblc我的坏,完全忘记了link@WBeauchesne单击Test295并向我们显示带有错误的字符串。我几乎可以肯定jquery没有加载什么,或者在你的插件之后加载什么。您还可以尝试使用jQuerysome_元素,而不是使用别名$@kpblc$document.readyfunction{$test.select2;};是错误为uncaughtreferenceerror:$的字符串未定义我只是将其从application.js中删除了,它没有修复jQuery错误,但如果这是一种更好的做法,我将保留它。至于我的ruby版本,我期待着很快改变ruby版本@WBeauchesne正常,涡轮链接也可能有问题。尝试关闭它们,或者添加jquery turbolinks,但只是关闭了它们,没有任何效果。defer=defer属性修复了它!非常感谢你