web-dev-qa-db-ja.com

アセットパイプライン:admin.cssファイルを除外する

Rails 3.0アプリをRails 3.1にアップグレードしました

/*
*= require_self
*= require_tree .
*/

application.cssファイル内。ただし、メインアプリのcssファイルを上書きしているadmin.cssファイルがあります。

含まれないようにadmin.cssファイルを除外する方法はありますか?サイトの管理セクションにadmin.cssファイルを手動で含めますが、ユーザーインターフェイスから除外する方法が必要です。

26
Leahcim

同様の質問が以前に出されたので、それを確認する必要があります

Sprocketsはマニフェストファイルを使用して、含めるアセットと提供するアセットを決定します。これらのマニフェストファイルには、ディレクティブ(単一のCSSファイルまたはJavaScriptファイルを作成するために必要なファイルをSprocketsに指示する指示)が含まれています。これらのディレクティブを使用して、Sprocketsは指定されたファイルをロードし、必要に応じて処理し、それらを1つのファイルに連結してから圧縮します(Rails.application.config.assets.compressがtrueの場合)。多くのファイルではなく1つのファイルを提供することで、ブラウザーが行う要求が少なくなるため、ページのロード時間を大幅に短縮できます。

マニフェストファイルは必要な数だけ作成できます。たとえば、admin.cssおよびadmin.jsマニフェストには、アプリケーションのadminセクションに使用されるJSおよびCSSファイルを含めることができます。

特に、個々のファイルを指定でき、それらは指定された順序でコンパイルされます。

例と詳細は このガイド にあります。

したがって、新しいapplication.cssは次のようになります。

/*
 *= require styles
 *= require layout
 */

/* Other styles */
4
Syed Aslam

次のように、マニフェストでstubスプロケットディレクティブを使用できます。

/*
*= require_self
*= require_tree .
*= stub admin
*/

これにより、admin.cssおよび[〜#〜] all [〜#〜] cssが除外されます!!したがって、admin.cssのマニフェストが次のようになっている場合:

/*
*= require bootstrap
*= require_self
*/

bootstrap.cssも除外され、requireはこれを修正できませんでした!これに気をつけてください;)

97
JoJoS

別の解決策は、app/assets/stylesheetsに2つのディレクトリを含めることです。たとえば、publicディレクトリとadminディレクトリです。

次に、app/assets/stylesheets/application.cssで、require_tree .require_tree ./publicに変更できます。

管理者側でも同様のことを行う必要がある場合があります。私はたまたま Administrate gemを使用しています。これは、独自のアセットの場所を知っています。

3
Jason Swett