Почему я теряю форматирование при использовании simple_format в ruby ​​on rails 4.2.6?

Когда я использую html_safe,

<%= @micropost.content.html_safe  %>

Я получаю следующий вывод с правильным форматированием.

введите здесь описание изображения

Но когда я использую simple_format, я теряю выравнивание по центру и получаю разрывы строк в списке, которые мне не нужны.

<%= simple_format(auto_link(@micropost.content, html: { target: '_blank' }), {}, :sanitize => false) %>

введите здесь описание изображения

Это то, что я получаю, когда использую auto_link отдельно с sanitize false.

<%= auto_link(@micropost.content, html: { target: '_blank' }, sanitize: false) %>

введите здесь описание изображения

Это то, что я получаю, когда использую auto_link отдельно с sanitize true.

<%= auto_link(@micropost.content, html: { target: '_blank' }, sanitize: true) %>

введите здесь описание изображения

вот что у меня в посте

>> micp.content
=> "<p style=\"text-align: center;\">Pictre </p><h2 style=\"text-align: center;\">restse</h2><h2>sfsdfsdf</h2><p>sdfdsf</p><p style=\"text-align: center;\">dsfds</p><p>sfsdfsdf</p><ol><li>sdfdsfsdf</li><li>sdfsdfdsf</li><li>sdfdsf</li></ol><div>dfsdfsdfsd</div><p style=\"text-align: center;\">dfsdf</p><ol><li>dsfsdf</li><li>sdf</li><li>sdfsd</li></ol><p style=\"text-align: center;\"><br></p>"
>> 

Как мне решить эту проблему и получить форматирование, которое пользователь хотел в своем сообщении? Спасибо.


person LovingRails    schedule 08.06.2016    source источник


Ответы (1)


Это из документации API:

simple_format — возвращает текст, преобразованный в HTML с использованием простых правил форматирования. Два или более последовательных символа новой строки (\n\n) считаются абзацем и заключаются в теги <p>. Одна новая строка (\n) считается разрывом строки, и к ней добавляется тег <br />. Этот метод не удаляет новые строки из текста.

Итак, вместо:

<%= simple_format(auto_link(@micropost.content, html: { target: '_blank' }), {}, :sanitize => false) %>

Вероятно, вам следует сделать следующее:

<%= auto_link(@micropost.content, html: { target: '_blank' }, sanitize: false) %>

См. simple_format и rails_autolink для получения дополнительной информации.

person Dharam Gollapudi    schedule 08.06.2016
comment
Я попробовал ваше решение, и я получаю только теги html. Я обновил вывод в вопросе. - person LovingRails; 09.06.2016
comment
Попробуйте с sanitize: true - person Dharam Gollapudi; 09.06.2016
comment
Я получаю вывод сейчас, но все равно теряю форматирование. - person LovingRails; 09.06.2016