【Rails】画面のリロード時に処理を分ける方法(再読み込み、reloadの禁止)

こんにちは!CODE CLUB965のKです!

今回は、Railsで画面のリロード(reload)を禁止したい場合の方法について書きたいと思います。

リロードの禁止と書いていますが、実際には、リロードしたときと通常のアクセスを分けることで擬似的にリロードを禁止しているだけです。

ユーザーが画面をリロードしたときに通常のアクセス時とは違う処理をしたい場合に使えます。

リロード時に処理を分ける方法

実装時の流れは、

1:リクエストされたuriを取得し、uriをsessionに保存
2:リクエストされたuriとsessionを比較する
3:uriとsessionの比較結果で処理を分ける

実際のコードは以下のように書きます。

if request.path_info != session[:ref]
  session[:ref] = request.path_info
  # ここに通常時の処理を記述します
else
  # ここにリロード時の処理を記述します
end

uriとsessionを比較して、同じであればリロードと判断できるのでリロード時の処理を記述します。

uriとsessionが違うのであればリロードではないと判断できるので、通常の処理に入りますが、このとき取得したuriをsessionに保存することでリロードに備えることができます。

注意点ですが、必要な箇所でセッションを削除するのを忘れないで下さい。

session[:ref] = nil

この文を任意の削除するタイミングのところで記述して下さい。

これだけで、リロード時の処理を分けることができます。

最後に

リロードした時に処理を分けたりする対応をどうしたらいいか考えたときに、参考になる記事があまりなかったので今回は書いてみました。

少しでも参考にしてもらえれば幸いです。

それでは、また!

Follow me!