2013-06-11 95 views
17

我剛剛完成全新安裝並能夠訪問localhost:3000上的默認rails頁面,但是當我安裝activeadmin gem時,訪問/ admin /時出現問題,並在/ admin/login上收到以下錯誤(我被重定向,但這是我在頁面上看到的:) :)Ruby on Rails:「找不到文件jquery-ui'」

我該怎麼辦?我已經完成了軟件包更新,並沒有修復它。

這裏的部分錯誤消息:

鏈輪:: FileNotFound在#新

顯示/usr/local/rvm/gems/ruby-1.9.3-p392/ Active_admin /色器件/會話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)

這裏是我的寶石文件:

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' 
+2

顯示你的application.js文件 – uday

+1

@uDaY:active_admin使用它自己的清單 - application.js文件在這裏不應該有問題。 – PinnyM

回答

29

這是一個known issue由於jquery-rails依賴性下降jQuery的UI支持。暫時的解決方法似乎是迫使jquery-rails寶石使用版本2.3.0加載:

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

一個相關的問題是由於這樣的:Debug jQueryUI Versions in Rails

+0

是的,非常感謝! – tjcss

+4

這並沒有解決我的錯誤,就像上面 – markhorrocks

+0

@markhorrocks:然後它可能不是同一個原因 - 隨意問你關於你遇到的問題 – PinnyM

4

我建議將application.js//= require jquery_ui更新爲//= require jquery.ui.all作爲更好的解決方案(而不是使用過時版本的寶石)。

+0

由於OP聲明,由於active_admin中的清單,這發生在/ admin命名空間中。修改application.js將無濟於事 - 您需要複製active_admin資產樹並在其中進行修改。這是相當侵擾性的,而且很難保持更新。 – PinnyM

2

添加jquery-ui-rails gem也會給你jquery.ui的支持。

jquery.ui.slider 
+0

正確 - 包含jquery ui的新語法。 使用'// = require jquery.ui.all'來包含所有模塊,或者你可以用'// = require jquery.ui.core'指定核心' 更多信息[jquery-ui-rails gem [1] [1]:https://github.com/joliss/jquery-ui-rails – Danny

+1

我認爲Roger的評論現在已過時(截至2014年8月)Rails 4.1。 –

+0

是的!新[語法](https://github.com/joliss/jquery-ui-rails#require-everything)現在是'// = require jquery-ui'。 –

10

如果您正在使用:

gem 'jquery-ui-rails' 

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

jquery.ui.all 

或只有那些你需要,如後來版本的jquery-ui-rails在我的情況下是jquery-ui-rails-5.0.0

我在jQuery的UI護欄-5.0.0發現資產的文件夾,即寫下面一行到你的application.css:

*= require jquery-ui 

取爲你的CSS所有UI元素,它只是簡單地調用:

*= require jquery-ui/all 

,如果你編寫以下到您的application.js

//= require jquery-ui 

它取最jQuery的js文件,與一些特定datepickers的例外,還有的jQuery中沒有#ALL方法應用。JS,在大多數情況下,這些會做,但如果沒有,那麼你可以添加其餘diretcly到applications.js如

//=require jquery-ui/datepicker-ru 

因此,在總結使用,所有的UI兩個CSS JS

*= require jquery-ui 
//= require jquery-ui 
+0

解決了我的問題,因爲我將jquery-ui-rails升級到5.0.0。謝謝 –

+1

這對我有用。注意這個答案中的「短劃線」(即,「jquery.ui」應該是「jquery-ui」,因爲這個答案正確表示)。 –