在视图中使用帮助程序会转义html?

时间:2011-12-27 23:49:44

标签: ruby-on-rails model-view-controller view helper

在我的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 个答案:

答案 0 :(得分:3)

您可能希望在返回前致电html_safe。 Rails 3中的清理行为发生了一些变化(默认情况下启用了XSS保护),因此您可能还需要查看this SO discussion of raw, h, and html_safe,它链接到Yehuda Katz的explanation of SafeBuffers in Rails 3