2017-03-15 9 views
0

Ich verwende eingebetteten Ruby in HTML und versuche, eine neue Variable zu erstellen; Dies scheint jedoch die HTML-Formatierung über den Code zu ändern, obwohl ich gerade versuche, eine neue Variable zu erstellen und sie zu ändern. Es scheint, als wenn ich Newfood manipuliere, ändere ich auch den Wert, der in "Essen" gespeichert ist (fast in einer Pass-by-Reference-Weise). Wie kann ich es nach Wert weitergeben (wenn möglich)?Manipulieren von Variablen in HTML-eingebettetem Ruby

<% newfood = food%> 

<% newfood.gsub!('a','b')%> 

Antwort

1

Sie können die Klon oder dup Funktionen dafür verwenden.

In Ihrem Fall, wo Essen eine Schnur ist, werden sie beide funktionieren.

newfood = food.dup 
newfood = food.clone 

Die Funktionen arbeiten ein bisschen anders, das ist, was Rubin-doc sagt:

Im Allgemeinen Klon und dup können unterschiedliche Semantik in abgeleiteten Klassen. Während mit clone ein Objekt dupliziert wird, einschließlich seines internen Zustands, verwendet dup normalerweise die Klasse des untergeordneten Objekts, um die neue Instanz zu erstellen. http://ruby-doc.org/core-2.4.0/Object.html#method-i-dup-label-on+dup+vs+clone