所以我从AJAX的API请求中得到了这个地址7 rue la Tour d'Auvergne
。
但是当我将其提供给视图中的输入时,甚至只是像这样显示它
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 %>");
如果我使用html_safe的raw,那么我的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");
这次
'
不需要转义,因为字符串被括在双引号('“”')之间,从而避免了与单引号('
)的冲突。关于javascript - 字符“d'”在显示时变成“d'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44954832/