2012-01-11 18 views
5

Quindi ho un content_for nella mia vista per l'accesso e nel controller di sessioni, ho render :new quando l'utente non inserisce credenziali valide. Tuttavia, quando fa render :new, ottengo una pagina in bianco e nero senza css o js. Ecco come il mio content_for assomigliarerails content_for non viene eseguito durante il rendering?

<% content_for :head do %> 
    <%= stylesheet_link_tag "user_sessions/new" %> 
    <%= javascript_include_tag 'user_sessions/new.onready' %> 
<% end %> 

C'è un lavoro in giro per assicurarsi che il codice di cui sopra viene eseguito quando lo faccio render?

risposta

9

La mia ipotesi sarebbe che non si include il content_for ovunque. In app/views/layouts/application.html.erb (o qualsiasi disposizione che si sta utilizzando per questa pagina) fare in modo di avere qualcosa di simile a quanto segue:

<head> 
    <!-- your regular head content goes here --> 
    <%= content_for :head %> 
</head> 

Quando si passa un blocco per content_for, i contenuti del blocco vengono memorizzati per essere utilizzati altrove. La chiamata a content_for senza un blocco inserirà quindi il contenuto memorizzato.

Vedere the docs for content_for per ulteriori informazioni.

+0

RonaldOnRails deve essere la risposta ed ecco la risposta. – frandroid

+0

Questa risposta è corretta per Rails 3, che era l'ultima versione quando è stata posta questa domanda. –

3
<head><%= content_for :head %></head> 

non ha funzionato per me, ma

<head><%= yield :head %></head> 

lavorato, credo che questo è il diritto di fare

Basta ricordare: yield chiama il contenuto, e :head è il parametro per content_for che hai inserito nella tua vista renderizzata, così puoi mettere pezzi di codice ovunque dell'applicazione.html vuoi

+0

Questo ha funzionato esattamente come previsto ... Stranamente non ricordo di doverlo fare in questo modo nelle versioni precedenti di Rails. Potrebbe essere cambiato. In ogni caso, grazie per questo! – rcd

Problemi correlati