【问题标题】:Rails Asset Pipeline problems with jquery-ui使用 jquery-ui 的 Rails 资产管道问题
【发布时间】:2017-03-17 15:41:36
【问题描述】:

更新

我从 jquery 网站下载了最新版本的 jquery 3.1 和 jquery-ui。不幸的是,.effect() 函数的这个问题没有连接到资产管道。我包含了所有必需的 js 和 css 文件,但 .effect() 不起作用。

此问题仅与 Jquery-ui 有关,而 jquery 方法可以正常工作。 我放弃了,做一个 git checkout,我暂时不会使用 Jquery-ui 效果。

总结

我的资产管道运行良好,但由于我想使用 jquery-ui .effect() 函数,我发现浏览器控制台中的 jquery-ui.css 样式表存在问题。

我在 Rails 环境之外使用 1.12.1/jquery-ui.js 测试了这个功能,它工作正常。 我可以在http://localhost:3000/assets/jquery-ui.css显示 jquery-ui.css 文件。

我做了以下事情:

  1. 由于我的 jquery-ui.js 文件也是空的,我在我的应用程序 js 中需要 //= require jquery2。这解决了jquery-ui.js 的问题
  2. 由于缺少 jquery-ui.css 文件,我执行了以下操作:
  3. 运行rm -rf public/assets删除该文件夹中的文件(我也尝试使用rake assets:clean
  4. 运行 Rails 资产:在开发和生产中预编译
  5. 清除浏览器缓存并使用 chrome 匿名浏览

这没有解决任何问题,但我可以看到该文件,并且在生产中不存在此问题。 application.css 文件包含 jquery-ui.css。 所以也许.effect() 不适用于css,但适用于缺少的js 文件?该效果在生产中也不起作用。

https://barteringapps.herokuapp.com/

请按照上面的链接,用 chrome 你可以在 application.js 文件的第 18610 行测试这个函数,设置一个断点,看看<a id="signupFacebookButton"> 没有反弹。点击大底“用facebook注册”触发效果。

我想也许我没有反弹效果,但我可以看到开发中包含该文件,我想这不是问题。 Mozilla 给我以下错误“http:localhost:3000/assets/jquery-ui.self-fingerprint.css 无法加载”(我没有清除 mozilla 现金)。

这就是我所知道的,我正在运行的 jquery 版本是 v2.2.4,它与 JqueryUi 兼容。我的 jquery-rails gem 版本是 4.2.2,而我的 jquery-ui 版本如下 '~> 6.0', '>= 6.0.1'。

文档

我已阅读并遵循以下帖子的说明 Rails Assets Precompile just not working

我读过这个,但我没有运行rm Gemfile.lockCan't find 'jquery-ui' Rails 3.2

也许我现在的下一步是执行 Git 并尝试在我的项目中手动包含 jquery-ui 文件。

代码

这是我的 Gemfile

source 'https://rubygems.org'
ruby '2.3.3'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.1'
# Use sqlite3 as the database for Active Record
#gem 'sqlite3'
#gem 'mysql2', '>= 0.3.18', '< 0.5'
gem 'pg'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'bootstrap-sass', '~> 3.3.6'
gem 'font-awesome-sass'
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
gem 'jquery-ui-rails', '~> 6.0', '>= 6.0.1'
#gem 'jquery-ui-rails'
gem 'jquery-easing-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs wwith ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
gem "font-awesome-rails"
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
gem 'sprockets-rails', :require => 'sprockets/railtie'  

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  gem "better_errors"
  gem "binding_of_caller"
  gem "pry-rails"
  gem "pry-byebug"
end

group :production do
  gem 'rails_12factor', '0.0.2'
end

group :development, :test do 
  gem 'foreman'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

# Additional Gems added from Fabrizio
gem 'country_select'

gem 'devise'
gem 'omniauth-facebook'
gem 'acts-as-taggable-on', '~> 4.0'

gem 'fog', '~> 1.38'
#gem 'fog-aws'
gem 'rmagick', '~> 2.16'
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
gem 'mini_magick'

这是我的应用程序 js

//= require jquery2
//= require jquery_ujs
//= require bootstrap-sprockets
//= require jquery.easing
//= require jquery.scrollTo
//= require jquery.nicescroll
//= require jquery-ui
//= require jquery.tagsinput
//= require form-component
//= require scripts
//= require bootstrap-switch
//= require wow.min
//= require user
//= require main

这是我的应用 css

/*
 *= require jquery-ui
*/

@import "bootstrap-sprockets";
@import "bootstrap";
@import "bootstrap-theme";
@import "jquery-ui";
@import "elegant-icons-style";
@import "font-awesome";
@import "animate";
@import "style";
@import url(https://fonts.googleapis.com/css?family=Lato:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic);
@import "line-icons";
@import "style-2";
@import "default";
@import "style-responsive";
@import "user";
@import "jquery-ui";
@import "main";

Main.js 包括使按钮弹跳的代码

$(document).on('ready page:load', function() {
    $('#signupFacebookButton').click(function(){
        $(this).effect("bounce", "slow");
        console.log("It was called");
    });
});

用于设置按钮样式的 Main.css 代码

.signup {
    background-color: #00ccff;
    padding: 10px 30px;
    border: none;
    color: white;
    padding-left: 24px;
    padding-right: 21px;
    border-radius: 100px;
 }

.fa-2x {
    position: relative;
    bottom: -7%;
    left: 2%;
}

.signup span {
    position: relative;
    bottom: 3px;  /*11%;*/
    padding-left: 21px;
    font-size: 23px;
}

.btn-default:hover {
    border: none;
    outline: none;
}

Gemfile.lock(相关行)

   jquery-easing-rails (0.0.2)
      railties (>= 3.1.0)
    jquery-rails (4.2.2)
      rails-dom-testing (>= 1, < 3)
      railties (>= 4.2.0)
      thor (>= 0.14, < 2.0)
    jquery-ui-rails (6.0.1)
      railties (>= 3.2.16)

【问题讨论】:

  • 我不知道您的问题的原因(希望我知道!我的非常相似),但从语法上讲,您应该写“开发人员工作以换取住宿”。在标头广告中,此类错误可能会对商业可行性产生巨大影响。
  • @RailsKiddie 您在其他讨论中说问题出在插件上,所以您禁用了所有插件并发现某些 javascript 存在冲突?我正在考虑做同样的事情
  • 是的,当我移除旋钮和 kontrol javascript 插件时,jQuery 开始正常工作
  • @RailsKiddie 明天我将使用 jQuery 和 jQuery Ui 创建一个特定的布局进行测试。我会找到解决方案,因为我已经使用普通的 html 页面完成了此操作,所以如果它不适用于 jQuery 的 gem 版本,我不会使用 GEM,而是使用普通文件,如果这不是问题,我们会能够更好地理解它是什么。我认为我们遇到的问题是一样的

标签: ruby-on-rails rubygems rails-assets


【解决方案1】:

我通过创建具有特定布局的测试控制器解决了这个问题。

阅读更多内容以创建特定布局 rails assets in production not served (yet another assets issue)

在这个布局中,我将使用 jquery 和 jquery-ui 的 cdn 版本,因为它适用于 CDN 而不是 jquery-ui gem,所以我知道第一个问题出在 gem 上。

下载 jquery-ui(其中还包括 jquery 文件)并在我的 vendor/assets/javascripts 和样式表中包含 jquery 和 jquery-ui 解决了问题

其他 javascript 文件不会导致任何其他问题,但是使用这个测试控制器也测试样式表,我发现一个特定的自定义 css 样式表破坏了 jquery-ui 效果。

我可以通过删除样式表来解决这个问题,但是其中包含了很多很好的效果(因为我正在使用布局)。

此时我刚刚开始使用 chrome 开发人员工具取消注释链接具有的所有 css 属性,以便我通过测试哪个属性产生问题的效果来发现

例如,确实造成冲突的 css 属性与 a tag

a {
    color: #28c3ab;
    -webkit-transition: all .2s ease-in-out;
    -moz-transition: all .2s ease-in-out;
    transition: all .2s ease-in-out;
}

【讨论】:

  • @RailsKiddie 我想我们可以在几天内为您和我的问题找到解决方案
  • 我遇到了与gem 'jquery-rails' 相同的问题,您是否删除了jquery-ui 并通过CDN 添加了`jquery?
猜你喜欢
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多