我安装了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?
答案 0 :(得分:6)
Rails默认转义输出,因此你必须使用raw:
<p><%= raw @post.content %></p>
小心使用raw,如果您允许不受信任的用户在您的网站上输出HTML,它会让您受到XSS攻击。
答案 1 :(得分:0)
抱歉,我之前的回答出了问题。这就是我的意思:我会用
(@ post.content).html_safe
因为它比使用'raw'更安全。