2012-05-10 9 views
1

私のレール3.1アプリケーションでは、各コントローラの各アクションごとにロードする特定のファイルがあります。 users#indexにはindexとindex.jsとindex.cssファイルが必要ですが、users#showにはshow.jsとshow.cssファイルなどが必要です。レールアセットパイプラインとページ固有のファイル

しかし、rakeアセットを実行すると、すべてが1つの大きなアプリケーション.cssファイルとapplication.jsファイルがあり、私の見解が大きく変わってしまいます。 rakeアセットを使用しているときにこの問題を回避するには、 "config.assets.precompile + =%w(index.js show.css)"のやり方以外に、プリコンパイルの方法がありますか?ファイルの構造と名前を違うものにする必要はありますか?

答えて

2

CSSとJavaScriptに適切なスコープを適用することで問題を解決しました。例えば。

<body id="<%= "#{params[:controller]}-#{params[:action]}" %>" data-controller=<%= params[:controller] %> data-action=<%= params[:action] %>> 

そして、私のusers_index.cssファイルで、そのアクションはスコープされ、使用スタイル::私のレイアウトファイルのbodyタグは、次のように動的なIDが付与され

body#users-index { .. } 

マイCSSマニフェストので、ルックスこのように:JavaScriptのためとして

/* 
*= require self 
*= require jqueryUi 
*= require_tree . 
*/ 

、私は次の操作を行います

APP = { init: function() { ... }, 
     users = { 
        index: function() { 
          //jQuery bindings here; 
        }, 
        show: function() { 
         //More jQuery bindings here for this action; 
        } 
     } 
     } 
ページのロードが、私は次のようです今

、:

(function() { 
    action = $("body").data("action"); 
    controller = $("body").data("controller"); 
    APP.init(); 
    APP[controller][action](); 
      })(); 

回避策のビットが、私はポール・アイリッシュと彼の仲間は、JavaScriptのことを行うと、私はCSSを行うRailsCastsからライアンベイツを見た見ました私はそれが100%悪い習慣になることはできないと思います。

0

私は、ファイルが含まれている順序は物事を混乱させると言います。

あなたが一般的に望むのは、あなたのマイミスフェストの最初の定型コードであり、次にサイト全体のシート、最後にアクションシートです。

だからあなたapplication.cssは次のようになります。これをめちゃくちゃにされる可能性があります

/* 
*= require reset 
*= require formtastic 
*= require jquery-ui 
*= require formtastic_overrides 
*= require site 
*= require_tree . 
*/ 

他の事は、関連するファイルに幅広いルール(例えばp{color:green})を適用し、ために提供されることを期待していますちょうどそのアクション。

これはパイプラインの仕組みではなく、達成しようとしているものであれば、より具体的なルールを適用する必要があります。

個人的には、これらのファイルはすべて使用していません。私は(ほとんど)1つの場所でそれを見ることができるように私はいくつかのファイルに私のCSSを置くことを好む。私はそれを簡単に管理することがわかりますが、YMMV!

関連する問題