2012-08-27 41 views
0

我目前在我的application_helper.rb文件中有一個簡單的方法,它被設計用來添加一個鏈接,當點擊時它會向表單添加一些新的字段。它看起來像:Rails - 在助手中轉義html?

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的任何想法。

回答

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