2013-01-07 72 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