场合
bower
.bowerrc
bowerrc
设置目录vendor/assets/bower_components
application.rb
中,我输入了config.assets.paths << Rails.root.join('vendor', 'assets', 'bower_components')
"/vendor/assets/bower_components/fotorama"
application.css
中,我输入*= require fotorama/fotorama.css
<%= stylesheet_link_tag "application" %>
启动服务器rails server
- 一切正常。在生成的页面源中,我看到<link href="/assets/fotorama/fotorama.css?body=1" rel="stylesheet" />
。这个css文件有这行.fotorama__video-play {background: url(fotorama.png) no-repeat}
,还有许多其他行使用url作为文件“fotorama.png”,没关系,浏览器尝试在css文件附近找到这个png文件,并成功完成。< / p>
停止服务器,预编译所有essets rake assets:precompile
,然后在生产环境中运行服务器rails server -e production
问题
在生产环境中,我的所有css文件都已连接在一起,并且在页面源中它看起来像<link href="/assets/application-2d31fc33890d01b046194920367eb3d4.css" rel="stylesheet" />
,而且此文件仍有此行.fotorama__video-play {background: url(fotorama.png) no-repeat}
。现在浏览器试图在http://localhost:3000/assets/fotorama.png
找到png文件,但它不在这里,它不在任何地方,因为,我不知道为什么,"fotorama.png"
中没有"public/assets"
文件夹中。
问题
"/vendor/assets/bower_components"
传输到“public/assets
”请原谅我的英语,感谢所有帮助我的人。
答案 0 :(得分:0)
解决方案和答案
"app/assets"
的文件传输到"public/assets"
。要传输来自"/vendor/assets"
"application.rb"
此代码config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
"bower.json"
图片
.erb
中看到一些更改,请将npm moudle的所有主要文件的主要文件称为“main-bower-files”。使用扩展名为"app/assets/stylesheets/bower_components_manifest.css"
的每个css文件生成清单文件,并保存<%= asset_path '
' %>
加上目录路径之前和url("fotorama.png")
之后添加。 url("<%= asset_path 'fotorama/fotorama.png' %>")
&gt;&gt; .erb
。添加"app/assets/stylesheets/application.css"
扩展名并保存。* require bower_components_manifest
我添加{{1}}。其他解决方案之一,使用gem“bower-rails”。但我不喜欢它,因为在凉亭的一些插件中我需要覆盖一些“主”文件,而gem“bower-rails”不能这样做,npm“main-bower-files”可以。而且我喜欢在开始将我的代码包含到rails,gulp,bower之前保存我的工作流程。