2

コントローラーごとに個別のscssファイルがあり、それらすべてをapplication.cssファイルにインポートしないため、コントローラー固有のスタイルシートとjsファイルをレイアウトに含めることができます。

だから私はレイアウトで:

<%= stylesheet_link_tag "application" %>
<%= stylesheet_link_tag params[:controller], :media => "all" %>
<%= javascript_include_tag 'application' %>
<%= javascript_include_tag params[:controller] %>

しかし、rake Assets:precompileを実行すると、コントローラーのコンパイル済みアセットが取得されません。

私はWebで解決策を探しましたが、それらはすべて、必要なファイルをconfig.assets.precompileステーションに追加すると述べていました。そして、アプリ/アセット/スタイルシートのサブフォルダーとアプリ/アセット/ジャバスクリプトのサブフォルダー内のすべてのアセットが自動的にコンパイルされるように、そこに何を置くべきかわかりません。

更新1

OK、すべてを1つのファイルにコンパイルしますが、2つの問題があります。

  1. 必要なすべての変数とインポートを含む_base.scssファイルがあり、application.cssの名前をapplication.css.scssに変更して、他のすべての前にそのファイルをインポートできるようにします。

    @import 'base';
    @import 'style';
    @import 'forms';
    

マニフェストでそれを行うにはどうすればよいですか?scss自体を使用してディレクトリ全体をインポートする方法が見つかりませんでした。

  1. 異なるコントローラーの同じセレクターに対して、いくつかの異なるアクションがあります。これらのアクションを分離し、特定のページで魔女を処理する必要があることを定義する最も簡単な方法は何ですか?
4

3 に答える 3

2

解決:

config/application.rbファイルに

次の行を追加します。

config.assets.precompile += ["controller1.js", "controller1.css", "controller2.js", "controller3.js"]

次回assets:precompileを実行すると、このファイルもコンパイルされます

于 2012-07-12T15:08:25.637 に答える
0

これは、ページの読み込みごとに追加のHTTPリクエストを追加し、多くの追加ファイルを必要とし(ほとんどが空になり、実際のコントローラー固有のCSS / JSになることはめったにありません)、ブラウザーのキャッシュ(キャッシュ)を無視するため、お勧めできません。 application.css / jsを一度実行すると、忘れてしまいます)。

CSS / JSをすべて一緒に含めて、アセットパイプラインを適切に使用できるように作成することをお勧めします。

于 2012-04-22T07:17:12.123 に答える
0

次のようなものはどうですか?

config.assets.precompile += Dir::entries("app/assets/javascripts").
                               map{|f| f[/^(?!application\.).*\.js/]}.compact
于 2013-03-09T16:06:35.107 に答える