Rails 3.0アプリをRails 3.1にアップグレードしました
/*
*= require_self
*= require_tree .
*/
application.cssファイル内。ただし、メインアプリのcssファイルを上書きしているadmin.cssファイルがあります。
含まれないようにadmin.cssファイルを除外する方法はありますか?サイトの管理セクションにadmin.cssファイルを手動で含めますが、ユーザーインターフェイスから除外する方法が必要です。
同様の質問が以前に出されたので、それを確認する必要があります 。
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 */
次のように、マニフェストでstub
スプロケットディレクティブを使用できます。
/*
*= require_self
*= require_tree .
*= stub admin
*/
これにより、admin.css
および[〜#〜] all [〜#〜] cssが除外されます!!したがって、admin.css
のマニフェストが次のようになっている場合:
/*
*= require bootstrap
*= require_self
*/
bootstrap.css
も除外され、require
はこれを修正できませんでした!これに気をつけてください;)
別の解決策は、app/assets/stylesheets
に2つのディレクトリを含めることです。たとえば、public
ディレクトリとadmin
ディレクトリです。
次に、app/assets/stylesheets/application.css
で、require_tree .
をrequire_tree ./public
に変更できます。
管理者側でも同様のことを行う必要がある場合があります。私はたまたま Administrate gemを使用しています。これは、独自のアセットの場所を知っています。