我正在尝试将我的应用程序投入生产,并且图像和CSS资产路径无效。
这是我目前正在做的事情:
- 图片资产位于/app/assets/images/image.jpg
- 样式表位于/app/assets/stylesheets/style.css中
- 在我的布局中,我这样引用css文件:
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
- 重新启动独角兽之前,我运行
RAILS_ENV=production bundle exec rake assets:precompile
并成功,并且在public/assets
目录中看到了指纹文件。
浏览到我的网站时,出现的404 not found错误mysite.com/stylesheets/styles.css
。
我究竟做错了什么?
更新: 在我的布局中,它看起来像这样:
<%= 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文件。但这很令人困惑,为什么它对于javascript仍然可以正常工作(注意/assets/****.js
路径)。
<%= stylesheet_link_tag "style", media: "all", "data-turbolinks-track" => true %>
public/assets
; 2.仔细检查是否有其他指令试图加载该css文件(可能是硬编码的)
.home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }
实际上可以用替换在链轮中.home {background: #FFF url(image-path('hippopotamus.jpg')) no-repeat; }
。也许您可以尝试一下,如果有帮助。
stylesheet_link_tag
。