我有一个rails 3.1应用程序,它根据标准做法在“/app/assets/stylesheets/application.css”中使用带有css的默认布局。这适用于我的应用程序主要部分的资产流水线。
但是,当我生成使用/app/views/layouts/showreports.html.erb布局的报告时,我使用不同的“报告”布局,如下所示:
<!DOCTYPE html>
<html>
<head>
<%= stylesheet_link_tag "showreports" %>
<%= javascript_include_tag "showreports" %>
<%= csrf_meta_tag %>
</head>
<body>
<div id="mainarea" class="container">
<div class="span-24 last">
<%= yield %>
</div>
</div>
</body>
我正在使用rake assets:clean; rake assets:precompile
预编译我的资产,并检查清单文件(/public/assets/manifest.yml)中的内容是否正常,我没有看到任何对showreports.css的引用或者showreports.js。
当我在开发模式下测试我的程序时,毫不奇怪,它无法找到这些文件。
我猜这是rails 3.1的基本链接问题,但我认为sprockets足够聪明,可以解析资产的所有布局文件(超出默认的application.html.erb文件)。
只是想知道这可能是一个错误,还是我对这应该如何运作的误解。
干杯,
格雷格
更新
经过更多的修补,我正在回答我自己的问题,因为这对我来说最有意义......
This answer really gave the right clue
我做错了是使用名为“showreports.css”和“showreports.js”的文件作为清单文件。
我的修复是创建/app/assets/stylesheets/showreports
和/app/assets/javascripts/showreports
,然后将我的showreports。(css | js)重命名为application。(css | js)在各自的目录中。
执行此操作后,rake assets:precompile
很好地找到了它们并将它们正确地添加到清单文件中。
答案 0 :(得分:4)
根据http://guides.rubyonrails.org/asset_pipeline.html,您还应添加以下内容:
config.assets.precompile += %w(showreports.css showreports.js)
到你的application.rb文件
答案 1 :(得分:0)
这是一种误解。 Rails Assets Pipeline仅编译位于RAILS_ROOT/app/assets
的文件,您必须直接引用它们。如果要生成另一个文件,只需创建另一个与application.css / js具有相似内容的清单文件。同时检查require
指令以避免将一个文件包含在另一个文件中。