AR삽질러

Rails 一日一つメソッド (Day23) flashメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day23) flashメソッド

아랑팡팡 2024. 1. 31. 19:11
728x90

 

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メッセージを使った後、すぐ削除する時に使う。

 

 

728x90
반응형
LIST