2016-03-29 11 views
0

In meiner Rails-Anwendung habe ich mehrere Layouts und für jeden möchte ich spezielle CSS laden, wie kann ich das tun?application.css für verschiedene Layouts wie richtig eingestellt?

im Moment application.css sieht wie folgt aus:

//= require bootstrap.min 
//= require filechooser 
//= require bootstrap-switch.min 
//= require jquery.datetimepicker 
//= require fancybox2_1_5/jquery.fancybox 
//= require style 
*= require_self 
*/ 

Antwort

1

Wenn Sie verschiedene Layouts für verschiedene Controller verwenden, dann können Sie Ihre speziellen css oder js-Dateien direkt in Ihre Layouts verwenden, indem Sie eine Methode, um Ihre ApplicationHelper wie folgt ergänzt:

def controller_stylesheet_link_tag 
    if params[:controller] == "foo" 
    stylesheet_link_tag 'foo' 
    else 
    stylesheet_link_tag 'bar' 
    end 
end 

Dann, um Ihre Layouts wie application.html.erb diese Hilfsmethode hinzufügen -

<%= controller_stylesheet_link_tag %> 
1

Ich mag für jedes Layout (falls zutreffend) eine spezifische JS/CSS für Datei verwenden.

Zum Beispiel app/layouts/application.html.erb würde Ihre application.css, wie diese:

<%= stylesheet_link_tag 'application' %> 

Während app/layouts/admin.html.erbadmin.css hat:

<%= stylesheet_link_tag 'admin' %> 

Mit Ketten 3 oder höher, Sie auch Index-Dateien in denen verwenden können Verzeichnisse, um die Dinge organisiert zu halten. app/assets/stylesheets/admin/index.css wird als admin.css verfügbar sein. Weitere Informationen finden Sie unter Index Files are proxies for folders.

+0

Wenn ich dies tue, ist das Problem Vorkompilierung nicht funktionieren – Felix

+0

@Felix - das ist ein anderes Problem. Sie müssen Sprockets speziell mitteilen, welche Dateien in der Liste "config.assets.precompile" verfügbar sein sollen. Abhängig von Ihrer Rails-Version wird dies in 'config/initializers/assets.rb' oder' config/application.rb' konfiguriert. –

+0

Oder verwenden Sie die 'link'-Anweisung https://github.com/rails/sprockers# the-link-directive '// = link 'admin.js' oder '// = link' admin.css '' - Sie müssen möglicherweise mit den Pfaden spielen, um das zu erreichen. –

Verwandte Themen