字符 "d' " 显示时变为“d'”

Character "d' " becoming " d' " when displayed

所以我从 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&#39;Auvergne

知道如何让 d' 保持原样吗?我尝试用不同的方式对其进行编码或解码,但没有结果。

提前致谢

编辑

如果我使用 html_safe 的原始格式,我的 js.erb 就根本不会加载了

尝试将 html_safeescape_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");

这次 ' 不需要转义,因为字符串用双引号 ('" "') 括起来,这避免了与单引号 (') 的任何冲突。