2013-05-29 50 views
5

我只是部署我的雲端服務器的應用程序,然後enconter錯誤:部署rails應用程序。 jQuery的UI錯誤

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)): 

我以前部署一個共享的主機上的相同的應用程序,但我沒有得到這個錯誤previoulsy。所以我想我錯過了我的部署。 順便說一下在base.js:

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

而且在我的應用程序/資產/ Java腳本/ 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' 

回答

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 

此外,只是爲了確保您的設置是co rrect在application.rb你應該有:

application.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 

production.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

+0

寶石「的jQuery UI的護欄」已經是資產組 – GeorgesLeYeti

+0

之外@GeorgesLeYeti如果你看看這個錯誤,它說'(找不到文件'jquery-ui''它正在尋找'jquery-ui'。從你以前的評論你剛纔提到'gem'jquery-ui-rails' ' – David

+0

@GeorgesLeYeti此外,應該首先調用基礎架構'jquery'文件。所需文件的排序很重要。更進一步,我不明白爲什麼你有'app/assets/javascripts/application.js.erb'這個不會使對我沒有意義你爲什麼這樣做這 – David

6

我一直在努力解決這個問題。 ..

我相信你會遇到最近創建的ActiveAdmin和jquery-rails寶石之間的headbutt;本身的配置沒有任何問題。

jquery-rails用於包含JQuery UI的JavaScript副本(但不包括CSS;不知道爲什麼)。這是什麼拉動的線

//= require jquery-ui 

在ActiveAdmin的base.js文件。最近,jquery-rails放棄了包含JQuery UI JavaScript,因此上面的這一行現在沒有指向任何內容,並導致資產構建錯誤。安裝的jQuery UI的護欄並沒有幫助,因爲寶石重命名文件,以便正確需要線

//= require jquery.ui.all 

可能避免與jQuery的軌道以前的版本衝突。

不幸的是,ActiveAdmin不能簡單地在jquery-ui-rails而不是jquery-rails上重新綁定自己,並保持與Rails 3.0的向後兼容性,至少根據this issue report。所以一個解決方案可能會在未來幾天。

與此同時,剛剛申請jQuery的導軌的舊版本仍然包含的JavaScript的jQuery UI在你的Gemfile:

gem 'jquery-rails', '<3.0.0' 
+0

我嘗試了各種各樣的東西,最後「<3.0.0」正常工作。謝謝! – Lavixu

+0

文件被重命名的事實是我的問題。感謝這:) – McCee