html_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。
我如何返回未加限制的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
但没有骰子
事先提前答案 0 :(得分:4)
在Ruby on Rails中连接字符串时,每个未标记为html_safe的字符串在连接之前首先被转义。
使用你的第二个片段,确保在每个字符串上调用.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