Schienen: mit "content_for" nach der entsprechenden "Ausbeute" inside-layout
Ich denke, dies wurde gebeten vor, aber auch wenn ich bei Google eine Suche habe ich nicht kommen mit einer Lösung.
Also das ist, was ich versuche zu tun, 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>
Beachten Sie die Ausbeute vor die content_for.
Ich weiß, dass Rails standardmäßig nicht erlauben den Inhalt :Leiter definiert werden nach Ausbeute verwendet wurde, macht Sinn.
Ich habe sogar versucht Einhängen in das template render-Prozess, aber bisher ohne Erfolg.
Also mein Ziel ist es, in der Lage sein zu definieren content_for innen partials/templates und die "Ausbeute" irgendwie verzögert und ausgeführt, kurz bevor die Antwort an den browser gesendet wird.
Hat jemand eine Lösung?
Grüße und vielen Dank,
Frank
Update
Ich gehe mit weppos die Idee und versuche mich auf die rack-middleware. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Des rendering-Prozesses zuerst lädt und führt die Aktion aus Vorlage, dann schmückt Sie die Vorlage mit dem ausgewählten layout.
Das layout gerendert wird, von oben nach unten, so können Sie nicht fügen Sie mehr Inhalt
:head
nach:head
ist bereits erbracht.Müssen Sie Ihre Strategie ändern. Entweder platzieren Sie das fragment in einer teilweisen und befestigen Sie es an Ihre Aktion, Ansichten oder verwenden Sie einen post-processing-Strategie, wie ein Rack-Modul/after_filter zu ändern, den html-code direkt.
Wahrscheinlich würde ich versuchen eine bessere Lösung zu finden, basierend auf dem was ich tatsächlich brauche. Wenn Sie Begegnung diesem Problem, sind die Chancen der Fehler ist irgendwo anders, vielleicht in der app-Architektur.
Sollte es nicht sein, ein ist-gleich-Zeichen in Ihrem
content_for
- Anweisung. Es sollte sein:Wenn Sie definieren den Inhalt, der innerhalb Ihres templates und partials dann sollte es funktionieren. Diese Technik wurde bereits in Railscast episode 8.