2016-08-06 10 views
1

Ich Schleife Instanzvariable "@packages" in Controller eingestellt und versuche, einzelnes Objekt in einen der HTML zuweisen Element mit "Daten". Zum Ändern Rubin Objekt in json Ich bin mit „.to_json“ wie folgt:Konvertieren Instanzobjekt in JS-Objekt in "Ansicht", um in Data-html Attributausschnitte in der Mitte zuweisen

<% @packages.each do |package| %> 
    <% json_package=package.to_json %> 
    <a href="#" data-single-package=<%= json_package %>></a> 
<% end %> 

jedoch auf Inspizieren den Ankertag i json Objekt gefunden wird Schneiden in einen der Eigenschaft ab, die einen Wert mit Platz hatten zwischendurch es.

enter image description here

Wie Sie sehen können, „title“ Eigenschaft hat den Wert „annarpurna Schaltung“, sondern „.to_json“ schneidet im Raum ab, indem Sie“.

Wie kann ich diese ganze Reihe machen passieren ??

+0

@maxpleaner wie das zugehörige hier auf die Frage? – phoet

+0

Nein, das glaube ich nicht. – phoet

Antwort

1

würden Sie brauchen, um den Wert zu entkommen, die Sie in den hTML-Code setzen, damit es nicht die hTML-Attribut zitiert wird brechen.

wenn Sie Schienen wollen für Sie behandeln zitieren, können Sie Verwenden Sie die data Attribut, das an Tag-Helfer wie link_to übergeben werden kann.

dh:

<%= link_to "", "#", data: {"single-package" => package} %> 
+0

Können Sie ein Beispiel dafür geben, wie Sie 'gsub' dafür verwenden? –

+0

@maxpleaner Wie hat 'gsub' etwas damit zu tun? – phoet

0

Das Ergebnis der Anwendung .to_json Objekt in String konvertieren, und als String wird aufgrund nicht Austrittsraum gsub das Abschneiden hilft Leerzeichen mit nbsp substiture.

Hier ist, wie es es für mich gelöst:

<% json_package.to_json.gsub(/\s/,"&nbsp;") %> 
Verwandte Themen