Javascript $未定义,在Rails中使用Select2插件时发生未捕获引用错误
我正在尝试使用Select2插件将搜索栏添加到我的选择框中 我在查看页面控制台时遇到以下错误: 未捕获引用错误:$未定义 在这里搜索不同的问题让我相信,之所以会发生这种错误,是因为在调用脚本之前没有包含或放置jQuery javascript。但我仍然找不到一个办法让它工作。如何修复此错误并使select2插件正常工作 下面是application.js文件: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 //=
//= 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属性修复了它!非常感谢你