5

我只是将我的应用程序部署在云服务器上,然后遇到错误:

ActionView::Template::Error (couldn't find file 'jquery-ui'
  (in /home/me/.rvm/gems/ruby-1.9.3-p429/gems/activeadmin-0.6.0/app/assets/javascripts/active_admin/base.js:2)):

我以前在共享主机上部署了相同的应用程序,但之前没有收到此错误。所以我想我在部署中错过了一些东西。顺便说一句,在 base.js 中:

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require active_admin/application

在我的 app/assets/javascripts/application.js.erb 中:

//= require Player/soundmanager2-nodebug-jsmin.js
//= require jquery
//= require jquery.ui.all
//= require jquery_ujs
//= require best_in_place
//= require best_in_place.purr
//= require jquery-fileupload
//= require contextMenu/jquery.contextMenu.js
//= require contextMenu/jquery.ui.position.js
//= require_tree .
//= require_tree ./Player

编辑:在我的 Gemfile 中:

# 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 'jquery-fileupload-rails'
gem 'jquery-ui-rails'
4

2 回答 2

6

我一直在努力解决同样的问题......

我相信您在 ActiveAdmin 和jquery-rails gem 之间遇到了最近创建的 headbutt;您的配置本身没有问题。

jquery-rails 曾经包含用于 JQuery UI 的 JavaScript 副本(但不包含 CSS;不知道为什么)。这就是线拉进来的东西

//= require jquery-ui

在 ActiveAdmin 的 base.js 文件中。最近,jquery-rails 放弃了对 JQuery UI JavaScript 的包含,因此上面的行现在没有指向任何内容并导致资产构建错误。安装 jquery-ui-rails 没有帮助,因为该 gem 重命名文件,以便正确的 require 行是

//= require jquery.ui.all

可能是为了避免与以前版本的 jquery-rails 冲突。

不幸的是,ActiveAdmin 不能简单地基于 jquery-ui-rails 而不是 jquery-rails 并保持与 Rails 3.0 的向后兼容性,至少根据这个问题报告。因此,解决方案可能会在几天后出现。

同时,只需请求一个旧版本的 jquery-rails,它仍然在 Gemfile 中包含用于 JQuery UI 的 JavaScript:

gem 'jquery-rails', '<3.0.0'
于 2013-05-30T01:31:11.030 回答
2

遇到类似的事情,发现从块中移除gem jquery-uigroup :assets我解决了这个问题。此外,您会在 gemfile 中注意到它说以下内容:

# Gems used only for assets and not required
# in production environments by default.

所以请确保这不是该:assets组的一部分

更新

我相信你的订购application.js应该是这样的:

//= require jquery
//= require jquery_ujs
//= require_tree .
//
//= require jquery-ui
//= require jquery.ui.all
//= require active_admin/application
//= require Player/soundmanager2-nodebug-jsmin.js
//= require best_in_place
//= require best_in_place.purr
//= require jquery-fileupload
//= require contextMenu/jquery.contextMenu.js
//= require contextMenu/jquery.ui.position.js

此外,为了确保您的设置正确,您application.rb应该拥有:

应用程序.rb

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

生产.rb

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

  # Compress JavaScripts and CSS
  config.assets.compress = true

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = true

当您想要执行以下命令时:bundle exec rake assets:precompile:all RAILS_ENV=production

于 2013-05-29T17:17:47.850 回答