1

標準的な慣行に従って、「/ app/assets/stylesheets/application.css」にcssを含むデフォルトのレイアウトを使用するRails 3.1アプリケーションがあります。これは、アプリケーションの主要部分のアセット パイプライン処理でうまく機能します。

しかし、次のように /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 での基本的なスプロケットの質問だと思いますが、スプロケットはアセットのすべてのレイアウト ファイル (デフォルトの application.html.erb ファイルを超えて) を解析するのに十分スマートであると思いました。

これがバグなのか、それともこれがどのように機能するかについての私の誤解なのか疑問に思っています.

乾杯、

グレッグ


アップデート

さらにいじくり回した後、これが私にとって最も理にかなっていたので、私は自分の質問に答えています...

この答えは本当に正しい手がかりを与えました

私が間違っていたのは、「showreports.css」および「showreports.js」という名前のファイルをマニフェスト ファイルとして使用していたことです。

私の修正は 、showreports.(css|js) を作成してから、それぞれのディレクトリ内で application.(css|js) に名前を変更することでした/app/assets/stylesheets/showreports/app/assets/javascripts/showreports

その後、rake assets:precompileそれらをうまく見つけて、マニフェストファイルに正しく追加しました。

4

2 に答える 2

0

誤解です。Rails Assets Pipeline は、にあるファイルのみをコンパイルするため、RAILS_ROOT/app/assetsそれらを直接参照する必要があります。別のファイルを生成する場合は、application.css/js と同様の内容の別のマニフェスト ファイルを作成するだけです。requireまた、ディレクティブをチェックして、あるファイルを別のファイルに含めないようにします。

于 2011-09-15T17:08:58.597 に答える