所以我从 AJAX 中的 API 请求中获取了这个地址 7 rue la Tour d'Auvergne
。
但是当我将它提供给我的 View 中的输入时,甚至只是像这样显示它时
get_adress.js.erb
alert('<%= @sellsy_address.address %>')
$('#address').val('<%= @sellsy_address.address unless @sellsy_address.blank? %>');
我得到了这个7 rue la Tour d'Auvergne
有什么想法可以让 d'
保持原样吗?我尝试用不同的方式对其进行编码或解码,但没有结果。
提前致谢
编辑
如果我使用 html_safe 的 raw,我的 js.erb 将不再加载
最佳答案
尝试将 html_safe
与 escape_javascript
(或 j
)一起使用,如下所示:
alert('<%= j @sellsy_address.address.html_safe %>');
或者,您可以跳过 j
但将单引号更改为双引号,如下所示:
alert("<%= @sellsy_address.address.html_safe %>");
If I use raw of html_safe, my js.erb just does not load at all anymore
这是因为,由于 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");
这次 '
不需要转义,因为字符串用双引号 ('""') 括起来,这样可以避免与单引号 ('
) 发生任何冲突。
关于javascript - 字符 "d' "becoming "d'”显示时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954832/