2012-04-22 1 views
2

コントローラごとに別々のscssファイルがあり、レイアウトにコントローラ固有のスタイルシートとjsファイルを含めることができるように、すべてをapplication.cssファイルにインポートしません。私はレイアウトでそうレール内のコントローラアセットをプリコンパイルする3.2

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

しかし、私は熊手資産を実行します。私は、コントローラの資産をコンパイルされませんプリコンパイル。

私はウェブ上で解決策を探しましたが、必要なファイルをconfig.assets.precompile staitmentに追加するように指定しました。 app/assets/javascriptのサブフォルダ内のすべてのアセットは自動的にコンパイルされます。

UPDATE 1

OK、私は1つのファイルにすべてのそれらをコンパイルしますが、二つの問題がある:私はすべての必要な変数と輸入を含む_base.scssファイルを持っている

  1. は、私は他のすべての前にそのファイルをインポートすることができるように、そしてapplication.css.scssにapplication.cssの名前を変更しています

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

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

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

答えて

0

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

CSS/JSをすべて一緒に組み込み、アセットパイプラインを適切に使用できるように書くのがよいでしょう。

+0

質問をこの問題に関する問題に更新しました。 – Almaron

+0

私は、アプリケーションCSS&JSと、コントローラごとのCSSとJSを持つことを好みます。コントローラは私のアプリケーションを特定の部分に分割しているからです。私はすべてのJSとCSSを1つのファイルにダンプするのが好きではありません。これはできますが、なぜすべての未使用のセレクタと空のjqueryセレクタがあるのでしょうか。 – Amala

2

ソリューション:

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

、あなたは資産を次回実行時:それは、これがまた

ファイルをコンパイルしますプリコンパイルするファイルのconfig/application.rbに

は、この行を追加します。

+0

私はこれを自動的に行う方法を探していますが、クリーンなものを見つけることはできません。 – Amala

0

何のようなもの:

config.assets.precompile += Dir::entries("app/assets/javascripts"). 
           map{|f| f[/^(?!application\.).*\.js/]}.compact 
関連する問題