はじめに

〜省略〜
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article, flash: { notice: '記事の作成が作成されました' }
else
redirect_to new_article_path
end
end
〜省略〜
```erb:show.html.erb
<% if flash[:notice] %>
<div class="alert alert-primary" role="alert">
<%= notice %>
</div>
<% end %>
<p>
<strong>Title:</strong>
<%= @article.title %>
</p>
<p>
<strong>Content:</strong>
<%= @article.content %>
</p>
<%= link_to '', edit_article_path(@article) %> |
<%= link_to 'Back', articles_path %>
解説
フラッシュメッセージを出現させるには2つの工程が必要です
1,flashを使ってメッセージを保管する(コントローラー側)
2,flashメッセージがあれば出現させる(ビュー側)
そもそもflashってなんやねん!
flashというのはrailsのメソッドでユーザーのセッションに一時的にハッシュのようにキーとバリューのような形で保存されるものです。
特徴としては、セッションは1度表示されると自動的に削除される点です。
1,flashを使ってメッセージを保管する
flashを使ってメッセージを保管する方法は2種類あります
またいずれの場合も notice
をキー '記事の作成が作成されました'
をバリューとしたセッションが保存されます
1つ目
, flash: { notice: '記事の作成が作成されました' }
最初のコードのようにredirect_toのあとに以下のように記述する方法。
2つ目
flash[:notice] = '記事の作成が作成されました'
シンプルにflashを使ってメッセージを保存する方法
この2つのいずれかの方法でセッションにメッセージを一時保存することができます。
2,flashメッセージがあれば出現させる
flashメッセージは flash[:キー名]
とすることでビュー側で値を取得することができます。
これを使ってview側では以下のように記述することでflashメッセージを出現させています。
<% if flash[:notice] %>
<div class="alert alert-primary" role="alert">
<%= notice %>
</div>
<% end %>
まとめ
以上2つの工程をふむことでflashメッセージはかなり簡単に作成することができます。
とりあえず使ってみるのが大事です。