Использование помощников в представлении избегает HTML? - PullRequest
1 голос
/ 28 декабря 2011

В моем приложении ruby ​​on rails я должен использовать рекурсию для отображения вложенных комментариев.

Из-за этого я решил переложить рендеринг в функцию в помощнике.

Основная структура функции выглядит следующим образом:

def display_comments(tree)
    to_render = ""
    to_render << render({:partial => 'comment', :locals => {:body => tree[:body]}})
    tree[:children].each do |child|
        to_render << display_comment(child)
    end
    return to_render
end

и в представлении я называю это так:

<% if comment_forest.length > 0 %>
    <% comment_forest.each do |tree| %>
        <%= display_comments(tree)
    <% end %>
<% end %>

Однако на веб-странице rails избегает всех html, и в итоге это выглядит так:

enter image description here

1 Ответ

3 голосов
/ 28 декабря 2011

Возможно, вы захотите позвонить html_safe, прежде чем вернуться. Поведение санации немного изменилось в Rails 3 (защита XSS была включена по умолчанию), так что вы также можете проверить это обсуждение SO raw, h и html_safe, которое ссылки на объяснение Иегуды Каца о SafeBuffers в Rails 3 .

...