【问题标题】:Ruby on Rails: "couldn't find file 'jquery-ui'"Ruby on Rails:“找不到文件 'jquery-ui'”
【发布时间】:2013-06-07 20:47:03
【问题描述】:

我刚刚完成了全新安装,并且能够访问位于 localhost:3000 的默认 Rails 页面,但是当我安装 activeadmin gem 时,我在访问 /admin/ 时遇到了问题,并在 /admin/ 上收到以下错误登录(我被重定向了,但这是我在页面上看到的:)

我该怎么办?我已经完成了捆绑更新,但没有修复它。

这里是部分错误信息:

Sprockets::FileNotFound in Active_admin/devise/sessions#new

显示 /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activeadmin->0.6.0/app/views/layouts/active_admin_logged_out.html.erb 其中第 12 行提出:

找不到文件'jquery-ui' (在/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activeadmin->0.6.0/app/assets/javascripts/active_admin/base.js:2)

这是我的 gem 文件:

source 'https://rubygems.org'

gem 'rails', '3.2.12'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'activeadmin'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'debugger'

【问题讨论】:

  • 显示你的 application.js 文件
  • @uDaY:active_admin 使用它自己的清单 - application.js 文件在这里应该无关紧要。

标签: ruby-on-rails


【解决方案1】:

这是一个known issue,因为jquery-rails 依赖项放弃了对jQuery-UI 的支持。目前的解决方法似乎是强制使用 2.3.0 版加载 jquery-rails gem:

gem 'jquery-rails', '~> 2.3.0'

由此引起的相关问题:Debug jQueryUI Versions in Rails

【讨论】:

  • @markhorrocks:那么这可能不是同一个原因 - 请随时就您遇到的问题提出问题
  • 如果你和我一样,这不起作用:确保你没有安装 gem jrails,它会与 jquery-rails 冲突,不会告诉你任何有用的错误所以。我正在升级到 Rails 3。
【解决方案2】:

如果您在我的情况下使用更高版本的 jquery-ui-rails jquery-ui-rails-5.0.0

我在 jquery-ui-rails-5.0.0 资产文件夹中发现,将以下行写入您的 application.css:

*= require jquery-ui

为您的 css 获取所有 ui 元素,它只是调用:

*= require jquery-ui/all

如果您将以下内容写入您的 application.js

//= require jquery-ui

它获取大多数jquery js文件,除了一些特定的日期选择器,application.js中没有jquery的#all方法,在大多数情况下可以这样做,但如果没有,那么你可以直接将其余的添加到应用程序中.js 例如

//=require jquery-ui/datepicker-ru

总而言之,将所有 ui 用于 css 和 js

*= require jquery-ui
//= require jquery-ui

【讨论】:

  • 解决了我的问题,因为我将 jquery-ui-rails 升级到了 5.0.0 。谢谢
  • 这对我有用。注意这个答案中的“破折号”(即“jquery.ui”应该是“jquery-ui”,正如这个答案正确表明的那样)。
【解决方案3】:

我建议将您的 application.js//= require jquery_ui 更新为 //= require jquery.ui.all 作为更好的解决方案(而不是使用过时版本的 gem)。

【讨论】:

  • 正如 OP 所述,由于 active_admin 中的清单,这发生在 /admin 命名空间中。修改 application.js 将无济于事 - 您需要复制 active_admin 资产树并在那里进行修改。这是相当侵入性的,维护更新非常令人头疼。
【解决方案4】:

添加 jquery-ui-rails gem 也会为您提供 jquery.ui 支持。

gem 'jquery-ui-rails'

在您的 application.js 和 application.css 文件中,您可以添加所有模块

jquery.ui.all

或者只有你需要的,例如:

jquery.ui.slider

【讨论】:

  • 正确 - 包含 jquery ui 的新语法。使用//= require jquery.ui.all 包含所有模块,或者您可以使用//= require jquery.ui.core 仅指定核心,更多信息位于[jquery-ui-rails gem page][1] [1]:github.com/joliss/jquery-ui-rails
  • 我认为 Roger 在 Rails 4.1 上的评论现在已经过时(截至 2014 年 8 月)。
  • 是的!新的syntax 现在是//= require jquery-ui
猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多