Ausbeute ERB ohne Schienen
-
20-09-2019 - |
Frage
Wie kann ich mit Ertrag für Template Vererbung in erb? Ich möchte erb in einem einfachen Ruby-CGI-Skript verwenden und wollen eine Basisvorlage und Subtemplate verwenden, wie es mit der Anwendungsvorlage Schienen der Fall ist.
Lösung
Ich glaube nicht, Sie können -. Rails, dass die Infrastruktur im Rahmen von Action bietet
Was Sie in der Lage sein können, zu tun ist, nimmt Action und es in das Skript hinzuzufügen.
Alternativ können Sie ein leichtes Templating-System selbst rollen.
Alternativ alternativ verwenden Rails oder Merb oder Sinatra.
Andere Tipps
def a
ERB.new('<%= yield %>').result(binding)
end
a{123}
#=> "123"
Es ist wichtig, dass der Aufruf von Kernel#binding
innerhalb einer Methode sein, auf diese Weise der Kontext den Block enthält (ERB#result
keinen Block nehmen).
Schauen Sie sich Tilt ( http://github.com/rtomayko/tilt/ ). Es ist das Juwel, dass Griffe in Sinatra Templating und bietet ERB Ausbeuten zusammen mit vielen anderen netten Features.
Sie können Tilt verwenden, aber wenn Sie nicht möchten, eine zusätzliche Abhängigkeit hinzuzufügen, hier ist ein besseres Beispiel dafür, wie man in erb ergeben können:
require "erb"
class Controller
TEMPLATE = ERB.new("Hello <%= @someone %>\n\n<%= yield %>")
def initialize(someone)
@someone = someone
end
def render
TEMPLATE.result(self.get_binding { yield })
end
def get_binding
binding
end
end
puts Controller.new("World").render { "I'm Jack" }
# =>
Hello World
I'm Jack
fand ich die Antwort hier .
Ich schrieb diese hier auf die Standardbibliothek ERB über das Hinzufügen von http://hostiledeveloper.com/2015/05/28/working-with-templates-in-ruby-erb.html
Es ist überraschend ein Schmerz im Hintern.