Ich habe eine String-Vorlage wie unten gezeigt
%Vor% Ich möchte die Vorlage basierend auf dem aktuellen Wert der Variablen content
auswerten.
Dies ist mein aktueller Ansatz für dieses Problem:
%Vor%Gibt es einen besseren Ansatz zur Lösung dieses Problems?
Ich habe das HTML-Fragment im obigen Beispielcode verwendet, um mein Szenario zu demonstrieren. Mein reales Szenario hat XPATH Vorlagen in einer Konfigurationsdatei festgelegt. Die Bindevariablen in der Vorlage werden ersetzt, um eine gültige XPATH-Zeichenfolge zu erhalten.
Ich habe über die Verwendung von ERB nachgedacht, habe mich aber dagegen entschieden, da es ein Overkill sein könnte.
Sie können eine Zeichenfolge so darstellen, als wäre sie eine Vorlage. Wenn Sie dies in einer Rake-Aufgabe verwenden, verwenden Sie besser Erb.new.
%Vor%Wenn Sie die ursprünglich vorgeschlagenen ActionController-Methoden verwenden, müssen Sie ein ActionController :: Base-Objekt instantiieren und render oder render_to_string senden.
Ich kann nicht sagen, dass ich einen dieser Ansätze wirklich empfehlen würde. Dafür gibt es Bibliotheken wie erb, und sie wurden gründlich für alle Randfälle getestet, an die Sie bisher noch nicht gedacht haben. Und alle anderen, die Ihren Code berühren müssen, werden es Ihnen danken. Wenn Sie jedoch keine externe Bibliothek verwenden möchten, habe ich einige Empfehlungen hinzugefügt.
Die my_eval
-Methode, die Sie einbezogen haben, funktionierte nicht für mich. Versuchen Sie stattdessen Folgendes:
Wenn Sie dies so verallgemeinern möchten, dass Sie Vorlagen verwenden können, die andere Variablen als content
haben, könnten Sie sie in etwa so erweitern:
Diese Methode würde so genannt werden
%Vor%Aber wiederum würde ich davon abraten, in diesem Fall Ihre eigenen zu rollen.
Zu spät, aber ich denke, ein besserer Weg ist wie ruby-style-guide :
%Vor%Tags und Links ruby ruby-on-rails