我正在尝试将我的应用程序投入生产,但图像和css资源路径不起作用。
这是我目前正在做的事情:
图像图像资产位于/app/ assets //Image.jpg
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
RAILS_ENV=production bundle exec rake assets:precompile
,它成功了,并且我在public/assets
目录中看到了指纹文件。当我浏览我的站点时,我得到了mysite.com/stylesheets/styles.css
的404not found错误。
我做错了什么?
更新:在我的布局中,它看起来像这样:
<%= stylesheet_link_tag "bootstrap.min", media: "all", "data-turbolinks-track" => true %>
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
生成的源代码如下:
<link data-turbolinks-track="true" href="/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/stylesheets/styles.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/application-0c647c942c6eff10ad92f1f2b0c64efe.js"></script>
看起来Rails没有正确地查找编译后的css文件。但它为什么能正确地用于javascripts (请注意/assets/****.js
路径)是非常令人困惑的。
发布于 2013-09-09 23:40:30
在/config/environments/production.rb
中,我必须添加以下内容:
Rails.application.config.assets.precompile += %w( *.js ^[^_]*.css *.css.erb )
.js已经进行了预编译,但我还是添加了它。.css和.css.erb显然不是自动发生的。^[^_]
从编译中排除了部分参数--它是一个正则表达式。
令人有点沮丧的是,文档明确指出默认情况下启用了资产管道,但没有澄清仅适用于javascripts的事实。
发布于 2014-02-10 15:32:56
在rails 4中,您需要进行以下更改:
config.assets.compile = true
config.assets.precompile = ['*.js', '*.css', '*.css.erb']
这对我很有效。使用以下命令预编译资源
RAILS_ENV=production bundle exec rake assets:precompile
祝你好运!
发布于 2014-12-05 22:59:12
我刚刚遇到了同样的问题,并在config/environment/production.rb中找到了以下设置:
# Rails 4:
config.serve_static_assets = false
# Or for Rails 5:
config.public_file_server.enabled = false
将其更改为true
使其正常工作。似乎在默认情况下,Rails希望您配置前端them服务器来处理公共文件夹之外的文件请求,而不是将它们代理到Rails应用程序。也许你已经为你的javascript文件做了这件事,而不是你的CSS样式表?
(See Rails 5 documentation)。正如注释中所指出的,由于默认设置为config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
,因此使用Rails5只需设置RAILS_SERVE_STATIC_FILES
环境变量即可。
https://stackoverflow.com/questions/18700219
复制相似问题