Ruby on rails 为什么调用_json会输出充满

Ruby on rails 为什么调用_json会输出充满,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的控制器操作中,我正在执行: @user = user.to_json <script type="text/javascript"> <%= @user %> </script> 在我看来,我正在做: @user = user.to_json <script type="text/javascript"> <%= @user %> </script> 为什么它包含“无处不在” 在irb中,它的输出很好,如下所示

在我的控制器操作中,我正在执行:

@user = user.to_json
<script type="text/javascript">
<%= @user %>
</script>
在我看来,我正在做:

@user = user.to_json
<script type="text/javascript">
<%= @user %>
</script>
为什么它包含“无处不在”

在irb中,它的输出很好,如下所示:

[{\"user\":{\"age\":8,...

在Rails 3中,默认情况下,视图中的所有输出都被转义。您过去必须调用
h(…)
来转义内容

您可以通过调用
html\u-safe
,告诉Rails您所输出的内容实际上是安全的,Rails不需要担心这一点:

<script type="text/javascript">
<%= @user.html_safe %>
</script>

原因是这些数据通常来自您的用户(例如,发布表单的用户),他们可能包含您随后输出的恶意内容,从而导致XSS攻击等。Rails 3采取了一种(有点争议)的方法,在这里格外谨慎


这里有一个来自Yehuda的关于
html\u-safe
的好消息,Rails 3中的实际情况是默认情况下对视图中的所有输出进行转义。您过去必须调用
h(…)
来转义内容

您可以通过调用
html\u-safe
,告诉Rails您所输出的内容实际上是安全的,Rails不需要担心这一点:

<script type="text/javascript">
<%= @user.html_safe %>
</script>

原因是这些数据通常来自您的用户(例如,发布表单的用户),他们可能包含您随后输出的恶意内容,从而导致XSS攻击等。Rails 3采取了一种(有点争议)的方法,在这里格外谨慎

这里有一个来自Yehuda的关于
html\u-safe
和真正发生的事情的好消息

试试原始方法

<%= raw @user %>

尝试原始方法

<%= raw @user %>