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

时间:2012-02-28 01:59:25

标签: ruby-on-rails

我安装了ckeditor gem:

https://github.com/galetahub/ckeditor

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

<%= 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?

2 个答案:

答案 0 :(得分:6)

Rails默认转义输出,因此你必须使用raw:

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

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

答案 1 :(得分:0)

抱歉,我之前的回答出了问题。这就是我的意思:我会用

  

(@ post.content).html_safe

因为它比使用'raw'更安全。