Rails - 在帮手中转义html?

时间:2012-08-27 14:18:01

标签: ruby-on-rails ruby-on-rails-3

我目前在我的application_helper.rb文件中有一个简单的方法,该文件旨在添加一个链接,该链接将在单击时向表单添加一些新字段。它看起来像:

def link_to_add_fields(type, object_form_builder)
  link_to type, "#", "data-partial" => h(render(:partial => type + '/form', 
                       :locals => {type.singularize.to_sym => object_form_builder,
                                   :form_actions_visible => false})),
                       :class => 'add_fields'
end

我遇到了这个代码的问题,即应该被添加到data-partial html属性的部分被转义(可能是在渲染的html中的某处引用)。我理解h()应该阻止这一点,但似乎并没有这样做。任何人都可以建议如何逃避这个?

编辑:我尝试使用如下所述的html_safe方法,但无济于事。我设法让它逃脱:

"data-partial" => "'" + render(:partial => type + '/form', :locals => {type.singularize.to_sym => object_form_builder, :form_actions_visible => false}) + "'"

但我不确定这有多安全?

编辑2:使用单引号转义并不好 - 虽然它会转义html,但在渲染部分时会输出引号,这是不可取的。仍在寻找有关如何在渲染部分时成功转义html的任何想法。

1 个答案:

答案 0 :(得分:4)

尝试使用.html_safe方法

def link_to_add_fields(type, object_form_builder)
  link_to type, "#", "data-partial" => h(render(:partial => type + '/form', 
                       :locals => {type.singularize.to_sym => object_form_builder,
                                   :form_actions_visible => false})).html_safe,
                       :class => 'add_fields'
end