Wygląda na to, że w Rails 3.1 wszystkie pliki css.scss zostają połączone w jeden plik. Co mam zrobić, jeśli chcę, aby plik css był uwzględniany tylko w niektórych widokach? Tak jak w przypadku, gdy chcę admin.css.scss na stronie administratora i main.css.scss na stronie głównej/o/kontakt.Rails3.1 - Jak dołączyć pliki css do niektórych widoków, ale nie do innych?
Odpowiedz
W Rails 3.1, wszystkie arkusze stylów zostaną połączone w application.css jeśli application.css wygląda następująco:
/*
* This is a manifest file that'll automatically include all the stylesheets available in this directory
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
* the top of the compiled file, but it's generally better to create a new file per style scope.
*= require_self
*= require_tree .
*/
To dzięki * = require_tree.
można wymagać specjalnego arkusza stylów z:
*= require main
W przeciwnym razie, w układzie, piszesz:
%head
= yield :head
aw swojej stronie:
= content_for :head do
= stylesheet_link_tag 'stylesheet'
Zobacz także:
http://guides.rubyonrails.org/layouts_and_rendering.html
(patrz punkt 2.2.14 'Znajdowanie layouty')
można mieć różne układy dla różnych kontrolerów!
np. pod app/views/layouts możesz mieć application.haml i admin.haml , a pod aplikacjami/kontrolerami masz admin_controller.rb
Railsy będą próbowały znaleźć układ o tej samej nazwie co kontroler.
Można także zmienić to zachowanie i określić, który układ w użyciu, np .:
class ItemsController < ApplicationController
layout "admin"
#...
end
Można by następnie utworzyć plik admin.scss pod APP/stylów dla tej nowej szacie!
Dodam rozwiązanie, które zadziałało dla mnie.
Jak wspomniano w poprzedniej odpowiedzi, może chcesz usunąć oświadczenie
*= require_tree .
z application.css pliku.
Ciągle oświadczenie
*= require_self
dla współdzielonych stylów całej aplikacji.
Wtedy w moim application.html pliku użyłem następujące oświadczenia obejmować tylko application.css i controller.controller_name.css arkuszy stylu, w widoku.
= stylesheet_link_tag "application", controller.controller_name
= javascript_include_tag "application", controller.controller_name
Jak widać to samo działa dla plików JavaScript.
Co robi głowica% head i yield: head bits? –
W Haml: % głowicy = wydajność: głowica Wygeneruje znacznik
w HTML i wstawi kod z innej strony przez wydajność – damienbrz