5

Tutti sanno come utilizzare stylesheet_link_tag a collegamento a un foglio di stile, ma vorrei effettivamente includere un intero foglio di stile in una pagina stessa. (No, di solito non è una buona pratica, ma ha senso in questo contesto.)In Rails, come posso includere un foglio di stile dalla pipeline degli asset come tag <style>?

stylesheet_include_tag non esiste, e un collega che è molto più grande cattivo a Rails di quanto io sia dice che non c'è è un modo semplice

Domanda:
E 'effettivamente possibile fare uso del bene gasdotto e incorporare ancora il contenuto di un file (compilato da Sass o CoffeeScript!) CSS o JavaScript in una vista .haml? Come?


Aggiunto per chiarezza:

vorrei per il mio layout per essere in grado di includere qualcosa di simile:

= stylesheet_link_tag "base" 
= stylesheet_embed_tag "page-specific-styles/foo" 

E avere questo genera output HTML in queste righe:

<link rel="stylesheet" href="/base.css" /> 
<style type="text/css">.foo { color: red; }</style> 

Aggiornamento

E 'possibile utilizzare Sass entro Haml se set your initalizer correctly, ma io non riesco a @import "foo" da questo contesto, in cui foo.css.sass è un foglio di stile in cantiere risorsa. Nota che @import "compass" (ammesso che tu abbia la gemma della bussola) funziona.

Questo appare come (Haml):

%style 
    :sass 
    @import "foo" 

Rails dà un errore che "foo" non può essere trovato, anche se afferma di essere alla ricerca in app/assets/stylesheets (che è dove foo.css.sass vita).

Quindi, questo sembra più vicino, ma ancora non del tutto lì.

+0

Se ho capito bene, vuoi includere il CSS effettivo nella vista '.haml'. – David

+0

@David Sì. Estenderò la domanda per renderla esplicita. –

+0

non considereresti forse usando il blocco 'content_for: head' forse o penso che potresti chiamarlo esplicitamente come' <% = stlyesheet_include_tag 'some_stylesheet'%> 'ma intendo come' .haml' credo che non lo farebbe Ho i tag ruby ​​incorporati rendendolo semplicemente '= stylesheet_include_tag 'some_stylesheet' Potrei sbagliarmi. Ma ci sono due metodi che ho suggerito a voi due. Speriamo che aiuti. – David

risposta

0

Se ho capito bene la tua domanda,

si potrebbe aggiungere il codice CSS in un normale file di vista rubino (come parziale), say styles.html.erb

e quindi aggiungere che alla tua pagina su qualsiasi condizione u vuole , Penso che sia il modo più semplice di guardarlo.

applausi

+0

Esatto, anche quello mi è successo, e sarebbe il più semplice, ma ** solo se ** Non ho bisogno di usare le funzionalità di Sass come estendere altri file Sass, come ho capito. –

+0

E per quanto riguarda il riutilizzo del codice, ovviamente questo non lo taglierà. –

2

da http://blog.phusion.nl/2011/08/14/rendering-rails-3-1-assets-to-string/:

YourApp::Application.assets.find_asset('api.css').source

in Haml

%style 
    =raw YourApp::Application.assets.find_asset('foo.css').source 

avvertimenti:

Credo che questo richiede un'attività di compilazione della produzione, che può essere piuttosto costoso .

+0

Fantastico! E senza dubbio alcuni caching potrebbero eliminare totalmente le prestazioni in testa –

Problemi correlati