1

我有一个 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 问题,但我认为 sprockets 足够聪明,可以解析资产的所有布局文件(超出默认的 application.html.erb 文件)。

只是想知道这是否可能是一个错误,或者只是我对它应该如何工作的误解。

干杯,

格雷格


更新

经过更多的修补,我正在回答我自己的问题,因为这对我来说最有意义......

这个答案确实给出了正确的线索

我做错的是使用名为“showreports.css”和“showreports.js”的文件作为清单文件。

我的解决方法是在它们各自的目录中创建/app/assets/stylesheets/showreports然后/app/assets/javascripts/showreports 将我的 showreports.(css|js) 重命名为 application.(css|js)。

这样做之后,rake assets:precompile很好地找到了它们并将它们正确添加到清单文件中。

4

2 回答 2

4

根据http://guides.rubyonrails.org/asset_pipeline.html您还应该添加以下内容:

config.assets.precompile += %w(showreports.css showreports.js)

到您的 application.rb 文件

于 2011-09-16T09:17:20.663 回答
0

这是一个误解。Rails Assets Pipeline 仅编译位于其中的文件RAILS_ROOT/app/assets,您必须直接引用它们。如果您想生成另一个文件,只需创建另一个与 application.css/js 内容相似的清单文件。还要检查require指令以避免将一个文件包含到另一个文件中。

于 2011-09-15T17:08:58.597 回答