2017-03-01 3 views
0

htmlをRailsフラッシュメッセージ/通知にレンダリングするには?HTMLをRailsフラッシュメッセージにレンダリングする

私は私のUsersControllerからこのdestroyアクションがあります。私はこの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 

、フラッシュ成功メッセージは、htmlタグを印刷する代わりに、それをレンダリングします。

私はthis答えを試してみましたが、コントローラーにありビューではないので、使用方法はありませんので、コードを埋め込むために<%=%>を使用していません。

+1

ERBファイルのフラッシュ部分の内部で '.html_safe'を呼び出すことができます。慎重にして、フラッシュ値に決してユーザーが入力したコンテンツが入力されないようにしてください。 ie: '<%= value.html_safe%>' –

+0

私はアプリケーションのレイアウトで '%flash.each do | message_type、message | %> ... <% end %> '、この' <%= message.html_safe%> 'のようにブロック内のメッセージに' .html_safe'を追加しました。しかし、今、それは存在しない場合のように、HTMLタグから何も印刷されていません... – Arnaud

+0

編集:私は 'Test'を私のフラッシュメッセージに入れば、その単語は太字で印刷されます。しかし、 'を使ってfontawesomeからアイコンを印刷すると、うまくいきません。 – Arnaud

答えて

0

誰かが同じ問題が発生した場合は、ここで私のために働いて答えである:

第一.html_safe方法はジャスティンリカータが言ったようにフラッシュのメッセージに適用する必要があります。

第二:あなたのメッセージ文字列にそれを入れて、あなたのメッセージに(私の場合は素晴らしいフォント)のアイコンを使用する場合は動作しません、あなたはフラッシュメッセージを印刷し、あなたの.htmlファイルにそれを配置する必要があります。私のレイアウトapplication.html.erbに、

はここに私のレンダリングフラッシュメッセージコードである(thisからインスピレーションを受け):

<% 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 %> 

私にとってこの作品、これが役立つことを願って。

関連する問題