Rails - вывод контента, санитарная обработка или <% = h? - PullRequest
3 голосов
/ 14 января 2011

Я недавно сделал небольшое приложение rails3 для конвертации старых cms, написанных на другом языке. После переноса контента возникают проблемы с выводом контента из базы данных.

Поле @ content.desc иногда имеет html. В настоящее время единственный способ заставить его работать:

<%= sanitize content.desc %>

Но так ли это лучше? Когда я использую <%=h @content.desc %>, я все еще вижу HTML-теги. Когда я использую <%= simple_format @content.desc %> я получаю злой интервал.

Есть ли где-нибудь определенное руководство, где я могу видеть все опции при выводе контента? Я пытался найти, но ничего не могу найти (rails newb, я знаю).

Ответы [ 3 ]

5 голосов
/ 14 января 2011

Любая строка, не помеченная как «безопасная», будет по умолчанию экранирована в HTML в Rails 3. Некоторые методы, такие как sanitize, h, link_to и многие другие помощники, возвращают безопасные строки, что позволяет им быть написано буквально. См. этот блог для получения дополнительной информации.

Если вы точно знаете, что HTML-код, содержащийся в @content.desc, безопасен, вы можете сами пометить его так: <%= @content.desc.html_safe %>.

2 голосов
/ 14 января 2011

Rails 3 изменил очистку HTML, чтобы включить по умолчанию.Если вы уверены , что отображаемая вами строка безопасна, вы можете использовать

<%= @content.desc.html_safe! %>

0 голосов
/ 14 января 2011

Если я не ошибаюсь, вам не нужно очищать содержимое перед его отображением, как это делает Rails 3 по умолчанию. Больше информации здесь: http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/

...