2017-11-20 4 views
0

Wie kann ich HTML-Objekteigenschaften in eingebetteten Ruby-Code in einer html.erb-Datei übergeben?HTML-Objekteigenschaften in eingebetteten Ruby-Code übergeben

Nehmen wir an, ich habe eine Ruby-Methode A, die einen String-Parameter akzeptiert (und auch der Rückgabewert von A ist String). Ich denke an Szenarien wie die folgenden:

<input type="text" id="t" value="Leaves"> 
<%= A(document.getElementById("t").value) %> 

Offensichtlich kann ich Code so nicht schreiben.

Ich möchte den Wert/Text des Textfelds in Methode A übergeben und den Rückgabewert von A in den HTML-Text drucken. Wie kann ich das machen?

Wenn ich den Wert des Textfelds kontinuierlich überprüfen und den Rückgabewert von A (wenn der aktuelle Wert des Textfelds an A übergeben wird) an den Hauptteil des Dokuments anhängen soll, was soll ich tun? Und wenn ich stattdessen den Text eines Absatzes p auf diesen Rückgabewert setzen wollte, was hätte ich tun sollen?

Antwort

1

Sie können einen HTML-Parser wie Nokogiri verwenden.

frag = Nokogiri::HTML.fragment('<input type="text" id="t" value="Leaves">') 
frag.at_css('#t').attr('value') 

Aber es scheint wie eine ziemlich albern und overcomplicated Lösung zu etwas, das höchstwahrscheinlichen Strings durch nicht mit HTML gelöst werden kann, um Daten in Ihren Ansichten/Helfern an erster Stelle passieren herum.

+1

Eher dumm, in der Tat! – jvillian

+0

Im Falle von Eingaben sollten Sie für ein Formularerstellungsobjekt verbindlich sein, so dass ich nicht wirklich die Notwendigkeit sehen kann, dies zu tun. ERB-Vorlagen sind auch nicht wie das DOM. Es ist nur ein String-Puffer und Sie können es wirklich nicht einfach als ein Dokument im laufenden Betrieb manipulieren. – max

+0

@max Sie schlagen vor, dass ich die text_field_tag-Hilfsmethode verwenden soll, richtig? Wie kann ich dann den Wert des erstellten Textfelds innerhalb des eingebetteten Ruby-Codes abrufen? (damit dieser Wert an die Methode A übergeben werden kann) –

Verwandte Themen