找不到文件 'jquery-ui'。

65

即使我在application.js文件中引入了jquery-ui,我仍然遇到以下错误:

找不到文件 'jquery-ui' (位于 /home/jeff/work/projects/a/media/app/assets/javascripts/application.js 的第14行)

application.js

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery.validate.min

有人可以帮我吗?


"jquery-rails" 宝石已安装吗? - Debadatt
是的,我已经在Gemfile中有gem了。 - Sam
1
请使用特定版本的gem "jquery-rails",即"2.3.0",或者您可以使用gem "jquery-ui-rails"来获取jquery-ui,因为后续版本的gem已删除了ui部分。 - Debadatt
1
对我来说,它很好用, gem 'jquery-rails',"~> 2.3.0" 请尝试一下。 - Mohanraj
@Mohanraj,@Debadatt- 你们的想法很好,谢谢。 - Sam
6个回答

120

使用特定版本的gem "jquery-rails","~> 2.3.0",因为gem的较新版本已删除了ui组件。

或者

您可以使用gem "jquery-ui-rails"来使用jquery-ui。有关详细信息,请访问git存储库

要引用所有jQuery UI模块,请将以下内容添加到您的application.js中:

对于5.0及更高版本,已经进行了更改。请按照链接操作

application.js:

//= require jquery-ui

应用程序样式表:

/*
 *= require jquery-ui
 */

对于低于5.0版本的情况,我们需要编写以下格式

application.js:

//= require jquery.ui.all

同时将jQuery UI CSS添加到你的application.css文件中:

application.css:

/*
 *= require jquery.ui.all
 */

希望这能对你有所帮助


如果我在Gemfile中添加了gem "jquery-ui-rails",那么会出现错误,提示找不到文件'jquery'。 - Sam
9
我发现我必须重新启动应用程序才能添加jquery-ui-rails。我采取的步骤是:1.将gem 'jquery-ui-rails'添加到Gemfile中。2.运行bundle install。3.在application.js和application.css中添加requires。4.重新启动Rails应用程序。现在对我来说运行良好。 - Andrew
这个答案已经不再准确,因为当前版本的jquery-ui-rails中已经没有jquery.ui.all了。 - Charles Duffy
1
哦!对于所有用户来说,要小心在这两个版本之间的减号和点号之间的jquery.ui和jquery-ui之间。我在这个微小愚蠢的符号上浪费了太多时间。顺便说一句,感谢你的回复。 - Ratinahirana
我想升级jquery-rails~> 4.0.4,因为Bundle Audit告诉我2.x存在漏洞。安装jquery-ui-rails适用于我。谢谢。 - PJSCopeland

38

我认为你正在使用新版本(你的版本>2.3.0)的jquery-rails。

jQuery UI已从jquery-rails gem中移除,

  • ≤ jquery-rails v2.3.0仍然包含jQuery UI
  • ≥ jquery-rails v3.0.0 已删除jQuery UI

请查看此提交

如果你正在使用 ≥ jquery-rails v3.0.0 或更高版本的jquery-rails

在Rails中使用jQuery UI应该使用jquery-ui-rails gem,请参考https://github.com/joliss/jquery-ui-rails

在你的Gemfile中添加:

gem 'jquery-ui-rails'

并运行 bundle install

  1. v2.3.0 < your version ≤ v4.2.1

    然后将以下内容添加到application.js文件中

    //= require jquery.ui.all
    

    然后把这个放到application.css里。

    *= require jquery.ui.all
    
  2. 需要使用jquery-ui-rails v5.0.0或最新版本

    并将以下内容添加到application.js

  3. //= require jquery-ui
    

    然后将这个放到application.css中。

    *= require jquery-ui
    

    如果要使用特定的模块,请查看此处

不要忘记重启服务器。

如果您正在使用≤ jquery-rails v2.3.0

请参阅我的答案:https://dev59.com/FHPYa4cB1Zd3GeqPexUI#16996710 ,使用 gem 'jquery-rails', "~> 2.3.0"


1
你在这里的更改似乎比 gemfile 的特定版本更具备未来性。感谢这个答案。 - Broam
我无法使用 gem 'jquery-rails', "~> 2.3.0" 让它正常工作,所以最终删除了 jquery-rails,只使用 gem 'jquery-ui-rails'。在这种情况下,您还需要从 application.js 中删除以下代码://= require jquery //= require jquery_ujs否则可能仍会出现错误。这对我很有帮助... - PSR

9
Rails 4的解决方案:
在gemfile.rb中添加以下内容:
gem 'jquery-ui-rails'

添加到application.js文件中:

//= require jquery
//= require jquery-ui
//= require jquery_ujs

添加一个特定模块:

//= require jquery
//= require jquery-ui/yourmodulename
//= require jquery_ujs

我不确定是否明确需要重新启动服务器,但这样做并不会有任何坏处。


1
是的!重启服务器解决了我的问题。 - Adam
请注意,在需要模块时,原来的 //= require jquery-ui/draggable 现在变成了 //= require jquery-ui/widgets/draggable,即多了一个“widgets”级别。 - giorgio

4

我知道这是一个新手错误,但我一直很沮丧,并且总是忘记在安装新东西后重新启动我的应用程序。

请确保在按照上面的说明进行操作后重新启动您的Rails服务器,它应该可以完美运行。


我简直不敢相信那是我的错误。 - Sebastian Delgado

1

这是一个初学者的错误,但如果有帮助的话...

我在我的资源中添加了jQuery-ui.js,然后添加了gem。然后从资源中删除了js,但我的IDE也从gem中删除了相同的文件。

要解决这个问题,首先删除gem,然后运行以下命令:

bundle clean --force

然后

bundle install

0
它可能只是重新启动WEBrick或任何其他服务器,以便它可以使用新的资源。对于WEBrick,只需转到运行服务器的终端窗口并使用CTRL-C终止进程,然后再次使用rails s或任何启动服务器的命令重新启动即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接