2013-01-07 49 views
1

html_safe,仍然逃脱HTMLhtml_safe仍然逃脱HTML

我有以下回复帮手:

def mb_reply_login post 
    if current_user 
    "<button data-depth='" + post.depth.to_s + "' data-post-id='" + post.id.to_s + "' class='mb_btn mb_reply btn'>reply</button>".html_safe 
    else 
    ... 
    end 

,并从视图中,像这样称呼它:

<%=mb_reply_login post %> 

然而,这返回转义HTML,并为什么混淆?它似乎不应该根据Don't escape html in ruby on rails和rails api。

我该如何返回unnscaped html?我试图

"<button data-depth='" + post.depth.to_s.html_safe + "' data-post-id='" + post.id.to_s.html_safe + "' class='mb_btn mb_reply btn'>reply</button>".html_safe 

但没有骰子

THX提前

+0

尝试这个:'“”.html_safe' – MrYoshiji

回答

4

当您在Ruby on Rails的连接字符串,尚未被标记为html_safe每一个字符串concatentating之前首先逃脱。

使用你的第二个片段,请确保调用.html_safe每个字符串(包括常量,如:更重要的是

"<button data-depth='" 

,你可以使用插值,如:

"<button data-depth='#{post.depth.to_s.html_safe}' 
data-post-id='#{post.id.to_s.html_safe}' 
class='mb_btn mb_reply btn'>reply</button>".html_safe 
+0

thx,look喜欢它的工作 – timpone

+0

很高兴我可以帮忙! – wless1