как отображать контент с необработанным HTML - PullRequest
22 голосов
/ 29 октября 2010

@post.body имеет следующий контент (который конвертируется из Markdown с помощью RDiscount). Как мне передать его пользователю, что это значит? то есть я хочу сделать это как сильный текст выделенный текст ...

<p><strong>strong text</strong> </p> <p><em>emphasized text</em> </p> <blockquote>  <p>this is a quote</p> </blockquote><p><img src="http://www.picturehouse.com/titles/images/rock.jpg" alt="alt text" title="" /> </p> 

Использование <%= @post.body => отобразит только текст, показанный выше.

Ответы [ 4 ]

53 голосов
/ 29 октября 2010

Предполагая, что Rails 3 использует вспомогательный метод raw , например

<%= raw(@post.body) %>

Экранирующий вывод HTML включен по умолчанию во всех шаблонах представления (в отличие от более ранних версий, где вам приходилось использовать метод h для индивидуального экранирования строк.)

5 голосов
/ 29 октября 2010

Я так понимаю, вы в Rails 3?Одно большое изменение заключается в том, что отображаемый текст по умолчанию был необработанным, и вам пришлось самостоятельно его очищать.Теперь все наоборот.Назовите это так:

<%= raw(@post.body) %>

И вы получите то, что ищете.

5 голосов
/ 29 октября 2010

Вы используете рельсы 3? Он автоматически экранирует все содержимое тегов <%= %>. Чтобы избежать этого, сделайте

<%= raw(@post.body) %>
0 голосов
/ 12 февраля 2019

Быстро, просто и точно

<%== @post.body %>

Дополнительная информация

<%== @post.body ==> - это псевдоним <%= raw(@post.body) ==>

https://edgeguides.rubyonrails.org/active_support_core_extensions.html#output-safety

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