17
15

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の使い方をまとめてみた

Last updated at Posted at 2020-08-14

#プログラミングの勉強日記
2020年8月14日 Progate Lv.226

#flashとは
 ページ上に一度だけ表示されるメッセージのこと。ユーザに対してページを移動したときに簡単なメッセージを表示させることができる。ユーザの登録完了などのサクセスメッセージや、投稿などの操作が失敗したときのエラーメッセージなどを表示するときに使う。

0814.PNG

#flashの書き方
 flashはハッシュのような形で記述する。

コントローラ
flash[:キー名]="表示したいメッセージ"

 キー名は好きな名前を付けることができる。
 フラッシュメッセージを表示したい箇所には以下のように記述する。

ビューファイル
<%= flash[:キー名] %>

##scaffoldで自動的に作成した場合

posts_controller.rb
def update
  respond_to do |format|
    if @post.update(post_params)
      format.html { redirect_to ("/posts"), notice: 'Post was successfully updated.' }
      format.json { render :show, status: :ok, location: @post }
    else
      format.html { render :edit }
      format.json { render json: @post.errors, status: :unprocessable_entity }
    end
  end
end
views/posts/index.html.erb
<p id="notice"><%= notice %></p>

##自分で作成した場合

users_controller.rb
def login
  @user = User.find_by(email: params[:email])
  if @user && @user.authenticate(params[:password])
    session[:user_id] = @user.id
    redirect_to("/users/index")
  else
    flash[:alert] = "メールアドレスまたはパスワードが間違っています"
    @email = params[:email]
    @password = params[:password]
    render("users/login_new")
  end
end
views/users/new.html.erb
<p id="alert"><%= alert %></p>

#noticeとalertオプション
 キーには好きな名前を付けることができるが、noticealertはオプションがある。これらは<%= flash[:キー名] %>と書く必要がなく、以下のようにflashを省略して書くことができる。

ビューファイル
<%= notice %>
<%= alert %>

 noticeは通知に、alertは警告に使うことが望ましい。

#redirect_toと合わせて使うときの書き方
 redirect_toでnoticeとalertを使うときはまとめて書くことができる。scaffold時のように以下のように書ける。

コントローラ
redirect_to ("パス"), notice: '表示するメッセージ' 

他のキー名でもまとめて書くことができ、その場合は以下のようになる。

コントローラ
redirect_to ("パス"), flash{キー名: '表示するメッセージ' }

 redirect_toはアクションが実行されてからビューが表示される。

17
15
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
17
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?