developer tip

두 페이지로드시 Rails 플래시 메시지가 유지됨

optionbox 2020. 11. 17. 08:01
반응형

두 페이지로드시 Rails 플래시 메시지가 유지됨


다음 코드와 함께 Rails 애플리케이션에서 플래시 알림을 사용하고 있습니다.

flash[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

플래시 메시지는 '새로 만들기'작업에서 예상대로 렌더링되지만 사용자가 방문하는 다음 페이지에도 표시됩니다. 한 번만 표시되어야하지만 무언가가 주변에 붙어 있습니다.


이 문제를 해결하는 방법에는 두 가지가 있습니다.

하나는 사용하는 것입니다

flash.now[:notice]

현재 요청이 끝날 때 플래시를 삭제해야하며 리디렉션 후에 사용하지 않는 경우

두 번째는 전화하는 것입니다.

flash.discard(:notice)

요청 끝에.

표준 플래시 메시지는 "다음"요청을 위해 보관됩니다. 예를 들어 생성 또는 편집 요청을 처리하는 동안 플래시를 생성 한 다음 사용자를 쇼 화면으로 리디렉션합니다. 브라우저가 쇼 화면에 다음 요청을하면 플래시가 표시됩니다.

실제로 쇼 화면 자체에서 플래시를 생성하는 경우 flash.now.

Ruby on Rails API 문서에서 Flash 해시 작동 방식을 확인하세요.


좋아, 나는 이것을 해결했다. 이를 우회하는 방법은 다음을 사용하는 것입니다.

flash.now[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

핵심 부분은 flash [: notice] 대신 flash.now [: notice]입니다.


또는 다음과 같이 작업을 호출 할 수 있습니다.

flash.now[:notice] = "Sorry, we weren't able to log you in with those details."
render 'new' #or render :new

참고 URL : https://stackoverflow.com/questions/1017210/rails-flash-message-remains-for-two-page-loads

반응형