##はじめに
今回は、メッセージアプリでメッセージを作成して送信ボタンを押した際に
”投稿しました”という表記をさせる想定&目的としました。
##メッセージ機能とは
入力フォームに名前、住所、質問等を書いて送信ボタンを押した際に
ユーザに送信完了を知らせるメッセージが出てくるとことがあると思います。
そのメッセージを表示させているのがflashになります。
その他にも確認、エラーメッセージで使用されています。
##flashの基本的な形
下記”メッセージ”部分に、表記させたい内容を書きます。
redirect_toでアクション実行後に、指定したルーティングを実行させます。
flash[:notice] = "メッセージ"
redirect_to ルーティング
または
redirect_to ルーティング, notice: "メッセージ"
##flash コントローラ部の記述
下記は、コントローラ部の記述になります。
この場合、表示されるメッセージは、”投稿しました” になります。
def create
post = Post.create!(post_params)
flash[:notice] = "投稿しました"
redirect_to posts_path
end
##flash ビュー部の記述
flash[:notice] = ”投稿しました” は、変数名[:key] = "value" というハッシュのような構造になっています。
そして、each doの先頭についているflashは変数名になります。
flashのkeyをeach doでflash_typeに送っているイメージになります。
これによってメッセージが表示されます。
<!DOCTYPE html>
#省略
<body>
<% flash.each do |flash_type, mssage| %>
<p><%= mssage %></p>
<hr>
<% end %>
<% yeild %>
</body>
##redirect_to ルーティング, notice: "メッセージ" に書き換えた場合
先ほど説明した項目”flashの基本的な形”で記述があったように
flash部分をredirect_to ルーティング, notice: "メッセージ"の形に書き直すこともできます。
def create
post = Post.create!(post_params)
redirect_to posts_path, notice:"投稿しました"
end
##最後に
私はプログラミング初学者で、教材学習を進めています。
その際、早く終わらそうと思って、なんとなくプログラムを書いている場合が多々あります。
時には一度立ち止まって、これってどうなっているのかな?と考えてみたり
Qiitaの記事を書くことで、理解が深まればと思い書きました。
もし、この記事が参考になれば幸いです。
ありがとうございました。