【发布时间】:2013-09-13 01:25:25
【问题描述】:
我正在尝试将我的应用程序投入生产,但图像和 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目录中看到了指纹文件。
当我浏览我的网站时,我收到 mysite.com/stylesheets/styles.css 的 404 not 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 路径)。
【问题讨论】:
-
你能告诉我们你是如何加载你的css文件的吗?从您的错误看来,您尝试硬链接它而不是使用
stylesheet_link_tag。 -
刚刚添加到上面。我在做
<%= stylesheet_link_tag "style", media: "all", "data-turbolinks-track" => true %> -
好的,所以我会推荐两件事:1. 如果此行被写为
public/assets的路径,请检查生成的源代码;以及 2. 仔细检查是否没有其他指令试图加载它css 文件(可能是硬编码的) -
我不能说使用 .erb 是否有问题,因为我从不这样做:
.home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }实际上可以在 sprocket 中替换为.home {background: #FFF url(image-path('hippopotamus.jpg')) no-repeat; }。如果这有帮助,也许你可以试试。 -
您是说我可以在我的 css 文件中动态引用该引用而不添加 .erb 扩展名?我更改了它,因为我不希望在我处于开发模式时链接断开。
标签: ruby-on-rails ruby asset-pipeline ruby-on-rails-4