Rotaie: usando “content_for” dopo la “resa” corrispondente dentro la layout
-
19-09-2019 - |
Domanda
Credo che questo è stato chiesto prima, ma anche se ho cercato di Google non hanno escogitato una soluzione.
Quindi questo è quello che sto cercando di fare in Rails 2.3.5:
layouts/application.html.erb:
<html>
<head>
... some other stuff
<%= yield :head %>
</head>
<body>
<% content_for :head, "something that belongs in the head" %>
</body>
</html>
Si noti la resa prima il content_for.
so che Rails - di default - non consente il contenuto di: testa da definire dopo il rendimento è stato utilizzato - ha un senso.
Ho anche cercato di agganciare nel modello di processo, ma senza successo finora il rendering.
Così il mio obiettivo è quello di poter definire parziali content_for dentro / templates e avere la "resa" in qualche modo ritardato ed eseguito poco prima della risposta è inviare al browser.
Ha qualcuno venire con una soluzione?
Saluti e grazie, Frank
Aggiorna Vado con l'idea di weppos e io provo sul middleware rack. grazie
Soluzione
Il processo di rendering primi carichi ed esegue il modello di azione, quindi decora il modello con il layout selezionato.
La disposizione è resa dall'alto verso il botton, quindi non è possibile aggiungere altri contenuti al :head
dopo :head
è già resa.
È necessario modificare la vostra strategia. O inserire il frammento in un parziale e allegarlo al vostro punto di vista di azione o di utilizzare una strategia post-elaborazione ad esempio un modulo rack / after_filter di modificare il codice html direttamente.
Probabilmente cercherei di trovare una soluzione migliore in base a quello che ho effettivamente bisogno. Se si è verificato questo problema, è probabile che l'errore è da qualche altra parte, forse nell'architettura app.
Altri suggerimenti
Non ci dovrebbe essere un segno di uguale nella sua dichiarazione content_for
. Dovrebbe essere:
<% content_for :head, "Something that belongs in the head" %>
Se si definisce il contenuto entro i modelli e partial allora dovrebbe funzionare. Questa tecnica era coperto di Railscast episodio 8 .