読者です 読者をやめる 読者になる 読者になる

ちーくんのブログ

プログラミング備忘録

Railsにフラッシュメッセージを表示する方法

こんにちは。本日はRailsでフラッシュメッセージ(投稿に成功した時にヘッダーの下に現れるやつ)を表示する方法です。

Railsには簡単にフラッシュメッセージを表示できる機能があるので順番に見ていきましょう。

バージョン

Ruby '2.2.1'
Rails '4.2.1'


application.html.erbの編集

application.html.erbはそのアプリの根幹を成すものなので、このファイルに成功した時のメッセージを書いてしまえばいちいち他のファイルにflash部分を書く必要はありません。

まずapplication.html.erbの<%= yield %>の上の部分に以下のようなコードを書きます。

# application.html.erb 

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>">
    <%= value %>
  </div>
<% end %>
<%= yield %>

これでアプリケーション全体でフラッシュメッセージが表示できるようになりました。


controllerのコード

application.html.erbを修正したので今度はcontrollerを見ていきましょう。
成功した時のメッセージはcreateアクションにメッセージを明示します。
flashオブジェクトはハッシュのように扱うことができるのでcontrollerを以下のようにかきます。

#posts_controller.rb

def create
  @post = Post.new(post_params)
     if @post.save
       flash[:success] = 'Post was successfully created.'
       redirect_to @post
     else
       render :new
     end
end


では試しに投稿してみましょう。

f:id:chi_kun:20160405021228p:plain

きちんとflashメッセージが表示されましたね。

今回はbootstrapを適応したアプリだったのでよく見慣れたライトグリーンのフラッシュメッセージになっています。
もちろん自分で好きな色を指定して変える事もできますのでbootstrapが気に入らないひとは自分色にするのもいいかもしれませんね。



本日は以上です。