Как заставить приложение Rails отображать HTML, сгенерированный гемом ckeditor? - PullRequest
1 голос
/ 28 февраля 2012

Я установил гем ckeditor:

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 ]

6 голосов
/ 28 февраля 2012

Rails по умолчанию экранирует вывод, поэтому вы должны использовать raw:

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

Будьте осторожны, используя raw, однако он откроет вам возможность атак XSS, если вы позволите ненадежным пользователям выводить HTML на вашем сайте.

0 голосов
/ 07 февраля 2013

Извините, в моем предыдущем ответе что-то пошло не так.Вот что я имел в виду: я бы использовал

(@ post.content) .html_safe

, потому что это безопаснее, чем использовать «raw».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...