管理画面と通常画面で別のCSSを適用する
rails4
rails3
要は、管理画面だけでtwitter-bootstrapを使いたかった。
管理画面はadminパスが入っているものとし、一般ユーザが使うのはパスなしとする。
URL
localhost:3000/admin localhost:3000/
ディレクトリ構成
Viewは以下のようなディレクトリ構成にしている。
app/views/layouts/admin/application.html.erb app/views/layouts/application.html.erb
CSS
admin.css.scssには、bootstrapをimportする。
application.css.scssから//= require_tree .を削除すること。
そいつがあるとcssファイルをすべてimportしてしまう。
admin.css.scss
@import 'bootstrap';
application.css.scss
// *= require_self
テンプレート
それぞれlink_tagの行のみを抜粋。cssのファイル名を第一引数に渡す。
admin/application.html.erb
<%= stylesheet_link_tag "admin", media: "all", "data-turbolinks-track" => true %>
application.html.erb
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
admin::controller
lautoutを指定していないと、adminネームスペースを区切っていてもapplication.html.erbを見に行ってしまう。
なので、admin::controllerではlayoutを指定してなければならない。
class Admin::HomeController < ApplicationController layout 'admin/application' def index end end
以上。