RailsではCSSを特に指定しなくても読み込まれるスタイルシートと、自分で指定して読み込むスタイルシートがあります。
自動で読み込まれるスタイルシート
この自動で読み込まれるスタイルシートはapp/assets/stylesheets/application.css
で指定します。
ディレクトリ以下の全てのスタイルシートを読み込む
*= require_tree .
と記述するとapp/assets/stylesheets
以下の全ての階層のスタイルシートが読み込まれます。
ディレクトリ直下の直下のスタイルシートを読み込む
*= require_directory .
と記述するとapp/assets/stylesheets
直下の全てのスタイルシートが読み込まれます。サブディレクトリは読み込まれません。
指定したスタイルシートを読み込む
自動で読み込まれるスタイルシートに加えて、自分でスタイルシートを指定して読み込むには、stylesheet_link_tag
を使います。
Step1. スタイルシートを配置する
スタイルシートは、app/assets/stylesheets
直下に何かディレクトリを作成し、そこに入れます。ここではbook
というディレクトリに入れます。
Step2. Viewでスタイルシートを読み込む。
ビューファイルを開き、次のようにしてスタイルシートを読み込みます。ここでは、book/chapter2.css.scss
を読み込みます。
<%= stylesheet_link_tag "book/chapter2", :media => "all" %>
Step3. (SCSSなら)プリコンパイルに追加する。
*= require_tree .
を外している場合は、SCSSファイルがプリコンパイルされないため、Sprockets::Rails::Helper::AssetNotPrecompiled
とエラーが発生します。
これを解決するには、config/initializers/assets.rb
を開き、次のようにbook/chapter2.css.scss
をプリコンパイル対象に指定します。
Rails.application.config.assets.precompile += %w( book/chapter2 )
もしくは、ディレクトリごとプリコンパイル対象にしたい場合は、ワイルドカード(*
)で指定します。
Rails.application.config.assets.precompile += %w( book/* )
Rails用のアプリケーションサーバー(
puma
など)を再起動して完了です。