Schienen: „content_for“ nach dem entsprechenden „yield“ inside-Layout unter Verwendung von

StackOverflow https://stackoverflow.com/questions/2026740

Frage

Ich denke, das zuvor gestellt wurde, aber obwohl ich gesucht Google habe ich nicht kommen mit einer Lösung.

Das ist also, was ich versuche in Rails zu tun 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>

Beachten Sie die Ausbeute vor die content_for.

Ich weiß, dass Rails - standardmäßig - nicht der Inhalt erlaubt: Kopf definiert wird nach Ausbeute verwendet worden ist - macht Sinn.

Ich habe sogar versucht, in die Vorlage Einhaken macht Prozess, aber keinen Erfolg bisher.

Also mein Ziel in der Lage ist content_for innerhalb partials / templates und haben die „Ausbeute“ irgendwie verzögert und nur ausgeführt zu definieren, bevor die Antwort an den Browser senden ist.

Hat jemand mit einer Lösung kommen?

Gruß und Dank, Frank

Update Ich werde mit weppos Idee gehen und versuchen, mich auf Rack-Middleware. Dank

War es hilfreich?

Lösung

Der Rendering-Prozess zum ersten Mal geladen und führt die Aktionsvorlage ziert dann die Vorlage mit dem gewählten Layout. Das Layout von oben gemacht wird botton, so können Sie nicht mehr Inhalt in dem :head nach :head ist bereits gemacht.

Sie müssen Ihre Strategie ändern. Entweder legen Sie das Fragment in einem Teil und verbinden Sie es mit Ihrer Aktion Ansichten oder verwenden Sie eine Nachverarbeitung Strategie wie ein Rack-Modul / after_filter direkt den HTML-Code zu ändern.

ich wahrscheinlich versuchen würde, eine bessere Lösung zu finden, auf dem, was ich wirklich brauchen. Wenn Sie dieses Problem auftritt, sind die Chancen der Fehler irgendwo anders ist, vielleicht in der App-Architektur.

Andere Tipps

Es sollte nicht ein Gleichheitszeichen in Ihrer content_for Aussage. Es sollte sein:

<% content_for :head, "Something that belongs in the head" %>

Wenn Sie den Inhalt in Ihren Vorlagen und partials definieren dann sollte es funktionieren. Diese Technik wurde in Railscast Episode 8 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top