Ruby on Rails: “couldn't find file 'jquery-ui'”

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

I've just done a fresh install and was able to access the default rails page at localhost:3000, but when I installed the activeadmin gem I had a problem when accessing /admin/ and received the following error on /admin/login (I was redirected, but this is what I saw on the page:)

What do I do? I have done bundle update and it's not fixed it.

Here's the partial error message:

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

Showing /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activeadmin->0.6.0/app/views/layouts/active_admin_logged_out.html.erb where line #12 raised:

couldn't find file 'jquery-ui' (in /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activeadmin->0.6.0/app/assets/javascripts/active_admin/base.js:2)

here is my gem file:

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' 

回答1:

This is a known issue due to the jquery-rails dependency dropping jQuery-UI support. The workaround for the moment appears to be to force the jquery-rails gem to load using version 2.3.0:

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

A related problem due to this: Debug jQueryUI Versions in Rails.



回答2:

If you are using later versions of jquery-ui-rails in my case jquery-ui-rails-5.0.0

I found out in the jquery-ui-rails-5.0.0 assets folder, that writing the following line into your application.css:

*= require jquery-ui 

fetches all ui elements for your css, it simply calls:

*= require jquery-ui/all 

and if you write the following into your application.js

//= require jquery-ui 

it fetches most jquery js files, with exception of some specific datepickers, there is no #all method for jquery in application.js, in most cases these would do, but if not, then you can add the rest diretcly into applications.js e.g

//=require jquery-ui/datepicker-ru 

So in summary to use all ui for both css and js

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


回答3:

I would suggest updating your application.js from: //= require jquery_ui to //= require jquery.ui.all as the preferable solution (rather than using an outdated version of the gem).



回答4:

Adding the jquery-ui-rails gem will also give you jquery.ui support.

gem 'jquery-ui-rails' 

In your application.js and application.css files, you can add all modules

jquery.ui.all 

or only the ones you need, e.g.:

jquery.ui.slider 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!