2014年7月2日水曜日

ページにより読み込むCSSを変える

 Railsのデフォルトでは、CSSはassets/stylesheetsの中を読んでくれるみたいだけど、ページ個別に適用したくて困った。
 いろいろなサイトを見たけどそのままではうまくいかず、下記の手順を踏んだ。

 まずapplication.cssで、assetsの例外を示しておく。下記を追加する。今回の例ではemail.cssが対象。
*= stub email
それから対象のビューのheadに下記を追加。
<%= yield :head %>
= yield :head #haml
 そんで、対象のビューの先頭に以下を突っ込む、と。(表記はhaml。)
-content_for :head do
  = stylesheet_link_tag '/inside/email', media: 'all'
 これでエラーが出て、下記を config/intializers/assets.rbに追記しろと具体的に言われたのでその通りにしたらできました。プリコンパイルって前にやったけどボンヤリしてる…。
Rails.application.config.assets.precompile += %w( inside/email.css )
できましたけど、相当回りくどいことをしていそうな気がする。
 まぁ、気に食わなかったらえらい人が文句言ってくるでしょう。

参考:
Rails4で、IEのみ特定のjsとCSSを読み込ませる。

 html周辺の話は8年くらい前に自分の稚拙なサイトを手作業で更新していたのでなんとなく感覚的にわかります。わかりますというか納得しやすいですね。
 動的、Rubyな要素が入ってくるととたんにわけがわからなくなる。はー。

0 件のコメント:

コメントを投稿