session을 사용하여 전환 소스의 이전 페이지로 돌아가는 방법
이런 사람에게 추천
이런 일을 하고 싶은 사람.
뒤로 버튼을 눌러 브라우저의 두 페이지 이전 페이지로 돌아가고 싶습니다.
환경
ruby 2.5.1
Rails 5.0.7.2
바로 결론
session
를 사용합시다.이번 경위
※위 그림의 왼쪽 1에서 오른쪽 3으로 가는 흐름
1. 상품 확인 페이지에서 구매 버튼을 누릅니다.
2.구입 완료 전에 신용카드 등록 페이지 천이하여 카드 등록을 한다
3. 『이 정보로 등록했어』라는 확인 페이지로 전환
문제점
뒤로 버튼을 누르면 이전 카드 등록 페이지로 돌아갑니다.
(정확하게는 카드 등록 페이지에서 리디렉션되는 페이지로 돌아간다)
【해결책】 session을 사용하여 전환 소스 이전의 리퍼러를 유지합시다.
전체상
class CardsController < ApplicationController
require "payjp"
before_action :sign_in_required
after_action :session_clear, only: [:show]
def new
session[:previous_url] = request.referer
# 〜以下省略〜
end
def pay
# 〜省略〜 カード登録のコードが入ります
end
def delete
# 〜省略〜 カード削除後のコードが入ります
end
def show
@session = session[:previous_url]
# 〜省略〜 カード登録後のコードが入ります
end
private
def sign_in_required
# 〜省略〜 ユーザー登録していない場合はユーザー登録ページに遷移するコードが入ります
end
def session_clear
session[:previous_url].clear
end
end
이번에 사용한 controller 내의 코드 발췌
처음으로 카드 등록을 할 때 정의하고 있는 new 액션에 기술
# URLを保存する処理
# sessionにひとつ前のリファラーをいれる
session[:previous_url] = request.referer
:previous_url
라는 것은 devise
를 넣고 있는 경우는 기술하는 것만으로 이용할 수 있습니다.request.referer
라는 것은, 이전의 URL (즉, 천이원 URL)을 취득하는 것입니다.카드 등록 확인 화면의 show 액션에 설명
# sessionの中からURLを取り出してリダイレクトさせる
@session = session[:previous_url]
view에서 사용하고 싶기 때문에 대입한 것에 한층 더 대입해 인스턴스를 생성합니다.
새 session_clear 액션을 작성하고 after_action으로 호출
# sessionをクリア
session[:previous_url].clear
축적된
session
해방해 주는 편이 시큐리티상에서도 좋다고 되어 있습니다.이제 이상적인 전환 소스로 돌아갈 수있었습니다.
끝.
Reference
이 문제에 관하여(session을 사용하여 전환 소스의 이전 페이지로 돌아가는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Namase/items/f16ef712a170408fc9fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)