Использование simple_format и html_safe одновременно в Rails

В @post.content, Я хочу

1.simple_format, поэтому содержимое будет иметь разные строки, а не одну строку без разрывов

2.html_safe, чтобы пользователь мог вставить некоторые <embed> ссылка на видео, как YouTube

Это нормально использовать <%= simple_format @post.content %> а также <%= @post.content.html_safe %> по отдельности

Но когда я использую их вместе: <%= simple_format @post.content.html_safe %>, html_safe не работает, и, следовательно, <embed> видео не отображается

Не могли бы вы сказать мне, как я могу включить <embed>код и simple_format в то же время? или есть другие решения для отображения @post.content? Спасибо!!!

2 ответа

Решение

Я бы сказал simple_format не дезинфицировать мой контент:

simple_format(@post.content, {}, :sanitize => false)

Я работаю над аналогичной проблемой.

Я пытаюсь опубликовать фрагменты кода в своем блоге. Это работает довольно хорошо, но все, что внутри <>, удаляется. Я показываю или что-то более сложное, что-то внутри <> исчезает. Я запустил код <% = simple_format (@ article.content), {}, sanitize: false и подошел к получению того, что хотел.

Проблема заключалась в том, что код внутри моих блоков фактически изменил макет моей страницы.:).

Я пошел с Redcarpet как мой ответ.

Это довольно просто.

Добавьте gem 'redcarpet' в ваш Gemfile и перезапустите сервер Rails.

В application_helper.rb вставьте следующий код:

def markdown(content)
  @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true, fenced_code_blocks: true)
  @markdown.render(content)
end    

Опции здесь описаны в документации. Но именно fenced_code_blocks: true позволяет размещать код в блоках, как описано.

Это будет выводить здесь все, что вы печатаете, и это будет работать с вашей вставкой.

Затем для рендеринга в вашем случае просто введите:

уценки (@post.content).html_safe

Должно быть хорошо идти. У вас также есть возможность сделать отступ в четыре пробела, как здесь, чтобы вставить код. Кажется, легче сделать ограждение, хотя.

Другие вопросы по тегам