所以我从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的raw,那么我的js.erb根本不会再加载

最佳答案

尝试将html_safeescape_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/

10-11 22:39
查看更多