Rails의 플래시 사용법을 정리해 보았습니다.

프로그래밍 공부 일기



2020년 8월 14일 Progate Lv.226

flash란?



페이지에 한 번만 표시되는 메시지. 사용자에게 페이지를 이동할 때 간단한 메시지를 표시할 수 있다. 사용자 등록 완료 등의 성공 메시지, 게시 등의 조작이 실패했을 때의 에러 메시지 등을 표시 할 때 사용된다.



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 %>

알림은 통지에, alert는 경고에 사용하는 것이 바람직하다.

redirect_to와 함께 사용할 때 작성하는 방법


redirect_to 로 notice와 alert를 사용할 때는 정리해 쓸 수 있다. scaffold 때처럼 다음과 같이 쓸 수 있다.

컨트롤러
redirect_to ("パス"), notice: '表示するメッセージ' 

다른 키명도 함께 쓸 수 있으며, 그 경우는 다음과 같다.

컨트롤러
redirect_to ("パス"), flash{キー名: '表示するメッセージ' }

redirect_to는 액션이 ​​실행되고 나서 뷰가 표시된다.

좋은 웹페이지 즐겨찾기