Rails でクッションページを作る


なにこれ

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版という本の p.239 に「コラム:クッションページ」というのがある。Rails でこのクッションページを作ったらどうなるかな、と思って作成することにした。

コードについて

さて、作っていきますか

とりあえず、コントローラーをつくる

$ rails g controller confirmation_of_external_pages show

ルーティングはこんなかんじ

Rails.application.routes.draw do
  resources :confirmation_of_external_pages, only: [:show]
end

コントローラーはこんな感じ

class ConfirmationOfExternalPagesController < ApplicationController
  def show
    @uri =  Base64.urlsafe_decode64(params[:id])
  end
end

ビューはちょっとプロダクション向けでないコードを含む

h1 クッションページ

hr

p 外部へ移動しますが、よろしいでしょうか。よろしければ上記のリンクをクリックしてください
p =link_to @uri, @uri

hr

p 練習用
ul
  li =link_to "https://google.co.jp/", confirmation_of_external_page_path("aHR0cHM6Ly9nb29nbGUuY28uanAv")
  li =link_to "https://www.yahoo.co.jp/", confirmation_of_external_page_path("aHR0cHM6Ly93d3cueWFob28uY28uanAv")
  li =link_to "https://www.sbcr.jp/product/4797393163/", confirmation_of_external_page_path("aHR0cHM6Ly93d3cuc2Jjci5qcC9wcm9kdWN0LzQ3OTczOTMxNjMv")

できあがったもの

テスト

System Test とコントローラー向けのコードは書いたが、あまり自信がないのでココにはのせない。Github のレポジトリ をみていただければと思う。

おわりに

クッションページなんてすぐにできるでしょ、と思ったら2時間も経っていた。まぁ、そんなものか。