嘗試使用html_safe
與escape_javascript
(或j
)沿,像這樣:
alert('<%= j @sellsy_address.address.html_safe %>');
或者,你可以跳過j
但改變單引號雙引號,像這樣:
alert("<%= @sellsy_address.address.html_safe %>");
如果我使用html_safe的原料,我js.erb只是不加載在所有再
這是因爲由於7 rue la Tour d'Auvergne
中的'
位於單引號內,因此會出現語法錯誤。檢查下面的例子;
單引號,沒有escape_javascript
(或j
)
alert('<%= @sellsy_address.address.html_safe %>');
//generated code:
alert('7 rue la Tour d'Auvergne');
正如你所看到,警報獲取字符串'7 rue la Tour d'
,然後期望一個右括號()
),所以你得到一個錯誤的無警報顯示。
單引號,用escape_javascript
(或j
)
alert('<%= j @sellsy_address.address.html_safe %>');
//generated code:
alert('7 rue la Tour d\'Auvergne');
現在'
已經逃了出來,不再是一個封閉的報價,所以正確顯示警報。
雙引號,沒有escape_javascript
(或j
)
alert("<%= @sellsy_address.address.html_safe %>");
//generated code:
alert("7 rue la Tour d'Auvergne");
這次'
,需要的不是逃避,因爲用戶用雙引號引起來(「」,「」),這避免了與單引號的任何衝突( '
)。
嘗試'unescape()'? –
你試過unescape嗎? https://www.w3schools.com/jsref/jsref_unescape.asp –
可能重複[在erb模板中禁用HTML轉義](https://stackoverflow.com/questions/4699497/disable-html-escaping-in-erb-模板) – Andreas