2016-10-05 6 views
1

自分のアプリケーションに特定のブートストラップ4テンプレートを使用しています。このテンプレート(cover.css)は、他のすべてのページが異なるスタイルを使用するため、ホームページ固有のものです。5つのブートストラップ4(シングルコントローラ)のインデックスアクション用に異なるCSS

cover.cssはどのようにインデックス操作にのみ使用できますか?

私のapplication.cssに私は@import "cover"を追加しましたが、これはインデックスアクションにのみ適用できますか?

代わりに、アプリケーション用にapplication.html.erb、ホームページ用に2番目のレイアウトhome.html.erbという2つのレイアウトを作成しようとしました。 indexアクションにのみcover.cssを関連付けるにはどうすればいいですか?アプリケーションの残りの部分にダッシュボードのレイアウトとCSSがありますか?

私はレール5とブートストラップ4アルファを使用しています。

+0

.home.indexセレクタにごcover.cssスコープ内のその後の出力は以下となり <body class="home index">

あなたのスタイルにレンダリングこの

<body class="<%= controller_name %> <%= action_name %>"> などのbodyタグにviews/layouts/application.html.erbセットクラスで

ホームページのコントローラ名は何ですか? – Swards

+0

アプリケーション全体で同じコントローラです。私はホームページのための別個のコントローラを持っていません – Ayrad

+0

[アクションごとのRailsのscssスタイルシート]の可能な複製(http://stackoverflow.com/questions/34022991/rails-scss-stylesheet-per-action) – slowjack2k

答えて

2

これを実現するには、いくつかの方法があります。

あなたは別のオプションは、1つのレイアウトとスコープあなたを用いることであろうcover.css資産を含んでレイアウトを作成し、ここでしか説明したindexアクション用のレイアウトを適用Rails layouts per action?

class MyController < ApplicationController 
    layout :resolve_layout 

    # ... 

    private 

    def resolve_layout 
    case action_name 
    when "new", "create" 
     "some_layout" 
    when "index" 
     "other_layout" 
    else 
     "application" 
    end 
    end 
end 

することができますスタイル。

body.home.index h1{ 
    /* this style is only applied on the home/index page */ 
} 
+0

これらのオプションのどれが解決策のベストプラクティスであると思いますか? – Ayrad

+0

両方ともベストプラクティスとして受け入れられます。両方のソリューションを一緒に使用できます。この場合、あなたが異なっている必要があるのはCSSだけであれば、スタイルをスコープするだけです。レイアウトが完全に異なっている必要がある場合は、もちろん解決レイアウト方法を使用してください。 –

関連する問題