일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- springboot
- 건담베이스
- ruby
- java
- nico
- 日本語
- 자바
- DART
- rails7
- vscode
- html
- メソッド
- 単語
- jsp
- Spring
- C로 시작하는 컴퓨터 프로그래밍4판
- rails
- 건담
- 반다이몰
- 일본어
- 인프런
- Python
- CSS
- 비즈니스일본어
- Flutter
- Web
- 연습문제
- 一日一つメソッド
- 디지몬
- javascript
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day23) flashメソッド 본문
Rails 一日一つメソッド (Day23) flash
flashとは
- flashメソッドは、ユーザーに対してページ移動した時に簡単なメッセージを一時的に表紙させる機能で、ユーザーにどんな作業の成功または失敗、エラーなどを表紙する。
- flashメッセージはControllerで設定され、次のRequestまで維持される。
flashの書き方
# Controller
flash[:キー名] = "表紙させたいメッセージ"
# View
<%= flash[:キー名] %>
noticeとalertオプション
<%= notice %>
<%= alert %>
notice | 何かの通知 |
alert | 警告のメッセージ |
例)ユーザー登録
class UsersController < ApplicationController
def create
@user = User.new(user_param)
if @user.save
redirect_to user_path(@user), notice: "ユーザーが登録されました!"
else
flash.now[:alert] = @user.errors.full_message.to_sentence
render 'new', status: :unprocesable_entity
end
end
end
content_tagメソッド
<% flash.each do |key, message| %>
<%= content_tag :div, message, class: key %>
<% end %>
- flashにある各メッセージを反復して divタグに囲んで、キーに該当するClassに使う。
redirect_to書き方
# Controller
if user.save
redirect_to root_path, notice: "メッセージを表紙する"
else
end
render書き方
# Controller
if user.save
redirect_to root_path, notice: "Userが登録されました"
else
flash[:alert] = "入力してください"
render :new
end
上のコードでUser登録に成功した場合、user.saveは trueを変換する。この時、redirect_to root_path, notice: "Userが登録されました" を通してUserをroot_path に redirectし flashメッセージを表紙する。
失敗した場合、user.saveが flaseを変換し、flash[:alert] = "入力してください"を通じて alertメッセージの flashメッセージを設定し、 render :newで新しいUserFormをrenderingする。
flashとflash.nowの違い
flash | redirection時に使われる。flashに設定されたメッセージは現在アクションと次のアクションの間に有効する。 |
flash.now | 現在のrequestだけでメッセージを表紙する場合に使われる。 renderを使って同じページをrenderingする時に適当で flash.nowに設定されたメッセージは現在パージだけ表紙される。 |
flash.keepの書き方
flash.keepはメッセージをもう一度維持するために使われる。flash.keepを使うことで、現在設定された flashメッセージを "保存"し次の要請でも使うことができる。
if user.save
redirect_to root_path
flash.keep(:notice)
else
end
flash.discardの書き方
# Controller
if user.save
redirect_to root_path, notice: "User登録に成功しました!"
else
flash[:alert] = "入力してください!"
flash.discard(:alert)
render :new
end
:newアクションをrenderingする時、:alertメッセージを使った後、削除する。
keepは、特定の flashメッセージを次のrequestまで維持する時。
discardは、現在のrequestでflashメッセージを使った後、すぐ削除する時に使う。
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
Rails 一日一つメソッド (Day25) link_toメソッド (0) | 2024.01.31 |
---|---|
Rails 一日一つメソッド (Day24) sessionメソッド (0) | 2024.01.31 |
Rails 一日一つメソッド (Day22) Associations- 中間テーブルとthroughオプション (0) | 2024.01.15 |
Rails 一日一つメソッド (Day21) Associations-has_oneメソッド (0) | 2024.01.12 |
Rails 一日一つメソッド (Day20) Associations-has_manyメソッド (0) | 2024.01.11 |