0

我目前在我的 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-partialhtml 属性的部分被转义(大概是在呈现的 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 的任何想法。

4

1 回答 1

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
于 2012-08-27T14:21:54.320 回答