Ruby on rails 如何使Rails应用程序呈现由ckeditor gem生成的HTML?

Ruby on rails 如何使Rails应用程序呈现由ckeditor gem生成的HTML?,ruby-on-rails,Ruby On Rails,我安装了ckeditor gem: 我按照所有步骤进行操作,并以如下方式显示: <%= form_for(@post) do |f| %> <%= render 'shared/error_messages' %> <div class="field"> <%= f.label :title %><br /> <%= f.text_field :title %> </div> &l

我安装了ckeditor gem:

我按照所有步骤进行操作,并以如下方式显示:

<%= form_for(@post) do |f| %>
  <%= render 'shared/error_messages' %>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :content %><br />
    <%= f.cktext_area :content, :input_html => { :value => "Default value" } %>
  </div>
  <div class="field">
    <%= f.label :tag_name %>
    <%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
这就是我展示内容的方式:

<p><%= @post.content %></p><br />
但是输出是实际的HTML标记。例如:

<p> Default v<strong>al</strong>ue s<u>ada</u>sd</p>

如何使其实际呈现最终HTML?

Rails默认情况下会转义输出,因此您必须使用raw:

<p><%= raw @post.content %></p>

不过,使用raw时要小心,如果您允许不受信任的用户在您的站点上输出HTML,它将使您面临XSS攻击。

Rails默认情况下会转义输出,因此您必须使用raw:

<p><%= raw @post.content %></p>

不过,使用raw时要小心,如果您允许不受信任的用户在您的网站上输出HTML,它会让您面临XSS攻击。

对不起,我之前的回答出现了问题。这就是我的意思:我会使用

@post.content.html_safe


因为它比使用“原始”更安全。

对不起,我之前的回答出了问题。这就是我的意思:我会使用

@post.content.html_safe


因为它比使用“原始”更安全。

谢谢。那么,在这种情况下,为了避免XSS攻击,通常要做什么呢?老实说,我从未遇到过允许用户输入HTML的情况,因此我不能100%确定最好的做法。不过,使用帮助器仅列出绝对必要的HTML元素/属性就足够了。谢谢。那么,在这种情况下,为了避免XSS攻击,通常要做什么呢?老实说,我从未遇到过允许用户输入HTML的情况,因此我不能100%确定最好的做法。不过,使用helper只列出绝对必要的HTML元素/属性就足够了。