2016-07-17 20 views
0

Versuch ausgeschlossen zu erzeugenRails Tag-Syntax mit mehreren Datenattributwerte Anführungszeichen

<img data-interchange="[assets/img/interchange/small.jpg, small], [assets/img/interchange/medium.jpg, medium], [assets/img/interchange/large.jpg, large]"> 

herausfordernd ist.

<%= tag "img", data: { interchange: ["[#{photo.image_url(:base).to_s}, small]", "[#{photo.image_url(:big).to_s}, medium]", "[#{photo.image_url(:desktop).to_s}, large]"] } %> 

wird HTML erzeugen, aber das Ergebnis ist immer noch außer Betrieb

<img data-interchange="[&quot;[https://[...]base_20160529_115006.jpg, small]&quot;,&quot;[https://[...]big_20160529_115006.jpg, medium]&quot;,&quot;[https://[...]desktop_20160529_115006.jpg, large]&quot;]" /> 

als &quot; erzeugt wird.

Was ist die richtige Syntax der richtigen HTML-String

+0

Ich habe JSON in 'data - *' - Attributen verwendet - könnte das für diesen Anwendungsfall funktionieren? – nort

+0

Könnte sein ... aber nicht in den Händen dieses JSON ignoramus ... – Jerome

Antwort

0

In Schienen erhalten Sie to_json Active der Verwendung können die Dinge in json zu kodieren.

<%= tag "img", data: { interchange: [[photo.image_url(:base), 'small'], [photo.image_url(:big), 'medium'], [photo.image_url(:desktop), 'large']].to_json } %> 

Welche

<img data-interchange="[[\"assets/images/interchange/base.jpg\",\"small\"],[\"assets/images/interchange/big.jpg\",\"medium\"],[\"assets/images/interchange/desktop.jpg\",\"large\"]]" /> 

Dann auf dem Front-End produziert können Sie JSON.parse benutzen, wenn Sie den Wert über getAttribute oder mit jQuery data abrufen, wenn Sie die Daten auf dem Front-End verwenden müssen .

var text = JSON.parse(element.getAttribute('data-interchange'));