-1

这似乎是一个愚蠢的问题,但没有办法做到这一点

使用 Rails 4.2.5。

在对控制器的远程调用中,

def update
  # ... save ...
  @notice="S'han trovat errors"
  # automatically renders update.js.erb
end

在 update.js.erb

alert('<%=(@notice)%>');

这是输出: 在此处输入图像描述

我试过的:

1)在控制器中:

 @notice="S'han trovat errors".html_safe

2)另一个证明,在 js.erb 中:

  alert('<%=raw(@notice)%>');

在这两种情况下,当执行 javascript 函数时alert(),它会在终端中挂起而没有任何消息,也不会在浏览器控制台中 ¿?

3)我也试过:

alert('<%=escape_javascript(@notice)%>');

但不起作用,显示“S'han trobat...”

当然,如果我显示在@noticeindex.html.erb中,结果是正确的(S'han trobat..)

我不知道如何从控制器传递给 js.erb 在要显示的字符串实例变量中的“'”字符

谢谢

4

2 回答 2

0

只需删除 raw 或尝试在 js 文件中添加 .html_safe ,而不是在控制器中。

其他解决方案是使用 \' 来转义单引号,例如

@notice="S\'han trovat 错误"

于 2016-05-25T07:21:39.400 回答
0

问题是javascript接收:

alert('S'han trobat errors');

有 3 '

所以解决方案是放在控制器中:

@notice="S'han trobat errors".html_safe

在 js.erb 中:

 alert("<%=(@notice)%>");

当然,我陷入了引号错误,

但我仍然有一个问题:为什么在 html.erb 文件中是自动转义的字符串,而它们不在 js.erb 中?.html_safe那么,如果我想显示它,为什么需要放入字符串js.erb

于 2016-05-25T07:47:35.043 回答