1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】flashの使い方について

Posted at

##はじめに
今回は、メッセージアプリでメッセージを作成して送信ボタンを押した際に
”投稿しました”という表記をさせる想定&目的としました。

##メッセージ機能とは
入力フォームに名前、住所、質問等を書いて送信ボタンを押した際に
ユーザに送信完了を知らせるメッセージが出てくるとことがあると思います。
そのメッセージを表示させているのがflashになります。
その他にも確認、エラーメッセージで使用されています。

##flashの基本的な形
下記”メッセージ”部分に、表記させたい内容を書きます。
redirect_toでアクション実行後に、指定したルーティングを実行させます。

flash[:notice] = "メッセージ"
redirect_to ルーティング
 
または

redirect_to ルーティング, notice: "メッセージ"

##flash コントローラ部の記述
下記は、コントローラ部の記述になります。
この場合、表示されるメッセージは、”投稿しました” になります。

app/controllers/posts_controller.rb
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に送っているイメージになります。
これによってメッセージが表示されます。

app/views/layouts/application.html.erb
<!DOCTYPE html>
#省略
<body>
  <% flash.each do |flash_type, mssage| %>
    <p><%= mssage %></p>
    <hr>
  <% end %>
  <% yeild %>
</body>

##redirect_to ルーティング, notice: "メッセージ" に書き換えた場合
先ほど説明した項目”flashの基本的な形”で記述があったように
flash部分をredirect_to ルーティング, notice: "メッセージ"の形に書き直すこともできます。

app/controllers/posts_controller.rb

def create
  post = Post.create!(post_params)
  redirect_to posts_path, notice:"投稿しました"
end

##最後に
私はプログラミング初学者で、教材学習を進めています。
その際、早く終わらそうと思って、なんとなくプログラムを書いている場合が多々あります。
時には一度立ち止まって、これってどうなっているのかな?と考えてみたり
Qiitaの記事を書くことで、理解が深まればと思い書きました。
もし、この記事が参考になれば幸いです。

ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?