Rails 4 – 包含供应商资产
我正在试图弄清楚如何插入一个bootstrap主题。 我有指南针轨道gem和Rails 4。
我的控制台中显示了一系列错误:
Failed to load resource: the server responded with a status of 404 (Not Found)
我认为这是因为我保存供应商资产的路径不正确。
我有一个名为’profile.html.erb’的布局
在那个布局中,我包括:
引用的css文件保存在vendor / assets / stylesheets文件夹中。
错误的全文显示了以下链接:
http://localhost:3000/profiles/vendor/assets/stylesheets/magnific-popup.css
额外的位是对配置文件的引用。
谁能看到我在定义这些路径时做错了什么?
进一步尝试
我刚刚发现这篇文章: 如何在Rails 4中加载供应商资产文件夹?
根据该post中的建议,我尝试更改我的application.css.scss文件,以便不使用路径引用,而是使用;
@import "css/magnific-popup";
当我保存,重新启动服务器,我收到此错误:
File to import not found or unreadable: css/magnific-popup. Load paths: CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter CompassRails::SpriteImporter /Users/f3/app/assets/images /Users/f3/app/assets/javascripts /Users/f3/app/assets/stylesheets /Users/f3/vendor/assets/fonts /Users/f3/vendor/assets/javascripts /Users/f3/vendor/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/gems/underscore-rails-1.8.3/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/gmaps4rails-2.1.2/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/chosen-rails-1.4.3/vendor/assets/images /Users/f/.rvm/gems/ruby-2.3.0/gems/chosen-rails-1.4.3/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/chosen-rails-1.4.3/vendor/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/gems/chartkick-1.4.1/app/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/formtastic-2.2.1/app/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/bundler/gems/surveyor-5281b317a559/lib/assets/images /Users/f/.rvm/gems/ruby-2.3.0/bundler/gems/surveyor-5281b317a559/lib/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/bundler/gems/surveyor-5281b317a559/lib/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/gems/dependent-fields-rails-0.4.2/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/cocoon-1.2.6/app/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/disqus_rails-0.0.6/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/jquery-rails-4.0.5/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/coffee-rails-4.1.0/lib/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/bundler/gems/momentjs-rails-eda1b74512db/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/bootstrap-slider-rails-5.3.1/vendor/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/bootstrap-slider-rails-5.3.1/vendor/assets/stylesheets /Users/f3/Rails/vendor/assets/fonts /Users/f/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/javascripts /Users/f/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/fonts /Users/f/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/images /Users/f/.rvm/gems/ruby-2.3.0/gems/font-awesome-sass-4.4.0/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/gems/font-awesome-sass-4.4.0/assets/fonts /Users/f3/app/assets/stylesheets /Users/f/.rvm/gems/ruby-2.3.0/gems/compass-core-1.0.3/stylesheets Compass::SpriteImporter /Users/melaniemaslem/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/stylesheets /Users/melaniemaslem/.rvm/gems/ruby-2.3.0/gems/font-awesome-sass-4.4.0/assets/stylesheets
任何人都可以看到我需要做什么才能将这些供应商资产集成到我的Rails 4应用程序中?
我现在发现这篇文章:
https://github.com/rails/rails/issues/11759
它表明我需要在我的配置中添加一些内容,但我对这可能是什么(或者它是否在正确的轨道上)感到困惑,因为问题是关于图像文件。
任何人都可以理解这个吗?
进一步尝试
我还尝试将链接标记添加到我的布局头部分以引用样式表(已经应该通过application.css.scss导入)。
我已经添加了:
到布局头部分。
当我尝试这个时,我收到一条错误消息,告诉我将以下行添加到我的config / initializer / assets.rb中:
Rails.application.config.assets.precompile += %w( magnific-popup.css )
当我尝试时,我仍然得到相同的错误(404)。 我不明白为什么它需要(或者它在做什么。我认为将import magnific-popup添加到application.css.scss就是所需要的)。
我想知道是否需要从布局链接到供应商的路径…如果这甚至是需要的话。
对于javascript文件 ,我收到两种错误:
首先是:
TypeError: undefined is not an object (evaluating '$') (anonymous function)circle-progress.self-f67ec54c54a06da27d11cda862036a058792eadc8ef982df2e7c0a1682536c31.js:8 http://localhost:3000/assets/circle-progress.self-f67ec54c54a06da27d11cda862036a058792eadc8ef982df2e7c0a1682536c31.js?body=1
我有一个名为的文件:
circle-progress.js
这是一个包装引导主题附带的供应商资产。 我最初将它放在我的vendor / assets / javascripts文件夹中,然后在application.js中需要
我在另一个帮助论坛上看到聊天,有人通过将文件移动到app / assets / javascripts,然后从application.js中删除require语句来解决他们的问题。
我尝试了,并重新运行rake资产:预编译,但我仍然得到错误。
第二个问题是:
TypeError: dp('#portfolioFiltering').multipleFilterMasonry is not a function. (In 'dp('#portfolioFiltering').multipleFilterMasonry', 'dp('#portfolioFiltering').multipleFilterMasonry' is undefined) onloadmain.self-5888479bd3eb03114ce5776dd32cfadf84f1d3a4335043513f8b1606d3ab5f4a.js:315
并显示一个E onload引用到http:// localhost:3000 / assets / main.self-5888479bd3eb03114ce5776dd32cfadf84f1d3a4335043513f8b1606d3ab5f4a.js?body = 1
我已经没有什么可以尝试解决这些问题了。
任何人都可以看到事情出了问题吗?
另一个CLUE
我发现了另一篇博客文章,描述了在rails中设置bootstrap主题时遇到的问题。 用户发现类似的javascript错误到我拥有的一个,这可归因于启用了两个版本的jQuery。
我的application.js文件包含以下所有内容:
//= require jquery //= require bootstrap-sprockets //= require jquery_ujs //= require html.sortable //= require disqus_rails //= require moment //= require bootstrap-datetimepicker //= require pickers //= require main //= require hammer.min //= require jquery.animate-enhanced.min //= require jquery.countTo //= require jquery.easing.1.3 //= require jquery.fitvids //= require jquery.magnific-popup.min //= require jquery.parallax-1.1.3 //= require jquery.properload //= require jquery.shuffle.modernizr.min //= require jquery.sudoSlider.min //= require jquery.superslides.min //= require masonry.pkgd.min //= require rotaterator //= require smoothscrolljs //= require waypoints.min //= require wow.min //= require gmaps/google //= require chosen-jquery //= require cocoon //= require imagesloaded.pkgd.min //= require isotope.pkgd.min //= require jquery.counterup.min //= require jquery.pjax //= require custom.js //= require slider //= require underscore //= require dependent-fields //= require_tree . //= require bootstrap-slider $(document).ready(function() { DependentFields.bind() });
每个对jQuery的引用都有不同的后缀,但任何人都可以看到哪一个可能与另一个重复?
这是从相对路径获取它,即它查看相对于当前路径的指定URL。
你可以做的一件事是为它指定一个绝对路径。
为此,请注意该路径将相对于您的公用文件夹。
因此,如果要将URL用作/vendor/assets/stylesheets/magnific-popup.css
,则magnific-popup.css
文件必须位于public/vendor/assets/stylesheets
目录中。
但是,如上面的Petr Gazarov所提到的,如果css是将在每个页面上使用的css,那么将它更可取在assets/stylesheets
目录中,并在application.css
需要它application.css
文件。