我目前在我的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的任何想法。
答案 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