2011-10-05 13 views

Respuesta

13

En Rails 3.1, todas las hojas de estilo se fusionarán en el application.css si su application.css parece:

/* 
* 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 . 
*/ 

Es debido a la * = require_tree.

Puede requerir una hoja de estilo específica con:

*= require main 

De lo contrario, en su diseño, se escribe:

%head 
= yield :head 

y en su página:

= content_for :head do 
= stylesheet_link_tag 'stylesheet' 
+0

¿Qué hace el% head y yield: head bits do? –

+0

En Haml: % head = yield: head Generará la etiqueta en HTML e insertará el código de otra página mediante el rendimiento – damienbrz

3

Consulte también:
http://guides.rubyonrails.org/layouts_and_rendering.html

(ver secciones 2.2.14 'encontrar Diseños')

que podría tener diferentes diseños para diferentes controladores!

p. Ej. en aplicaciones/vistas/diseños puede tener application.haml y admin.haml y en la aplicación/controladores tendría un admin_controller.rb

Rails intentará encontrar un diseño con el mismo nombre que el controlador.

También puede anular este comportamiento y especificar qué diseño a utilizar, por ejemplo .:

class ItemsController < ApplicationController 
    layout "admin" 
    #... 
end 

A continuación, crear un archivo admin.scss bajo APP/hojas de estilo para este nuevo diseño!

+0

+1 para realmente especificar qué sección mirar, en lugar de tirar el mismo enlace anterior. – ahnbizcad

+0

gracias. sí, es una página loooong, y cambiaron los números de sección – Tilo

10

permítanme añadir una solución que funcionó para mí

Como se ha mencionado en una respuesta anterior es posible que desee quitar la instrucción

*= require_tree . 

del archivo application.css.

me quedé con la declaración

*= require_self 

para los estilos compartidos a través de la aplicación.

Luego, en mi archivo application.html que utilizan las siguientes declaraciones para incluir sólo el application.css y las hojas de estilo controller.controller_name.css en la vista.

= stylesheet_link_tag "application", controller.controller_name 
= javascript_include_tag "application", controller.controller_name 

Como puede ver, el mismo funciona para los archivos de JavaScript.

Cuestiones relacionadas