Ich versuche, eine HTML-Datei auf unser Dateisystem zu schreiben, so dass es gezippt und verschickt werden kann, zusammen mit einigen anderen Sachen.Rails 2.2.2: Render eine Vorlage mit Ertrag, in einem Modell
Ich habe eine erb Vorlage, die ich verwenden möchte, in unserem Ordner app/views/layouts
. Diese Vorlage hat einen Standard-Aufruf <%= yield %>
, und in diesem Fall habe ich eine Reihe von vorgenerierten HTML, als String in meiner Methode, die ich mit Ertrag ersetzen möchte.
Also, ich brauche so etwas wie dieser (Pseudo-Code) zu tun:
string = "<div>This is some <strong>html</strong></div>"
erb_template = "app/views/layouts/my_layout.html.erb"
output_filename = "/tmp/output.html"
#something like this...
render_to_file(erb_template, output_filename) do
string
end
Es könnte einfacher sein, für mich nur versuchen <%= yield %>
gsub und ersetzen es mit meinem Text, aber das fühlt sich an wie ein Polizist out ...
Btw, wenn es einfacher ist, das Ergebnis als String zu erhalten, zB render_to_string
, und es dann selbst in eine Datei schreiben, ist das in Ordnung. Es ist die Auswertung der Vorlage mit der Ausbeute innerhalb, die ich nicht bekomme ...
EDIT: Ich habe versucht, <%= yield %>
zu <%= @content %>
zu ändern, und dann dies tun, aber sie beide einen Fehler "geschützte Methode Anruf" :
c = ActionController::Base.new()
html = c.render_to_string :template => erb_template, :layout => false, :locals => {:content => string}
c = ApplicationController.new()
html = c.render_to_string :template => erb_template, :layout => false, :locals => {:content => string}