2017-03-01 102 views
0

如何將html渲染爲Rails flash消息/通知?將HTML渲染爲Rails flash消息

我從UsersController這個destroy行動:

def destroy 
    User.find(params[:id]).destroy 
    flash[:success] = "<i class=\"fa fa-check\"></i> Utilisateur supprimé.".html_safe 
    redirect_to users_url 
end 

當我把這個destroy動作,閃光燈成功消息打印HTML標記,而不是渲染。

我試着用this回答,但我不知道如何使用它,因爲我在控制器中,而不是在視圖中,所以我沒有使用<%=%>來嵌入代碼。

+1

您可以在ERB文件中的flash部分內調用'.html_safe'。只要小心,並確保flash值永遠不會被用戶輸入內容填充。 ie:'<%= value.html_safe%>' –

+0

在應用程序佈局中,我有'<%flash.each do | message_type,message | %> ... <% end %>',我已經將'.html_safe'添加到塊中的消息中,如<%= message.html_safe%>。但現在,它不是從html標籤中打印任何東西,就像它不存在一樣...... – Arnaud

+0

編輯:如果我把'測試'寫入我的flash信息中,這個詞將被打印爲粗體。但是使用''從fontawesome打印圖標,它不工作......任何想法爲什麼? – Arnaud

回答

0

如果有人遇到同樣的問題,這裏是一個答案爲我工作:

:該.html_safe方法賈斯汀利卡塔說是適用於閃存的消息。

第二:如果你想使用的圖標(在我的情況下,字體真棒)到你的消息,把它變成你的消息字符串將無法正常工作,你必須把它放到你的.html文件,打印您的提示信息。 (從this啓發)

這裏是我的渲染閃信碼,進入我的佈局application.html.erb

<% flash.each do |message_type, message| %> 
    <div class="row" id="msgContainer"> 
    <div class="callout callout-<%= message_type %>" id="flash_message"> 
     <% if flash[:notice] %> 
     <i class="fa fa-info"></i> 
     <% end %> 
     <% if flash[:danger] %> 
     <i class="fa fa-exclamation-triangle"></i> 
     <% end %> 
     <% if flash[:success] %> 
     <i class="fa fa-check"></i> 
     <% end %> 
     <%= message.html_safe %> 
    </div> 
    </div> 
<% end %> 

這項工作對我來說,希望這可以幫助。