🐙

戻るボタン実装時の困りごと

2024/03/08に公開

内容

PF作成の時にメンターさんに教えて頂いたことをいつもで引き出せるように書いておこうと思います。
サイトによくある🔙ボタンを実装させようとした時の話です。

_back.html.erb

<% case controller.controller_name %>
  <% when "tags" %>
    <% link = user_path(current_user) %>
  <% when "studies" %>
    <% link = studies_path %>
  <% when "records" %>
    <% link = records_path %>
  <% else %>
    <% link = request.referer %>
<% end %>

<%= link_to link, class: "back" do %>
  <i class="fa-solid fa-arrow-left"></i>
<% end %>

失敗点として、戻るボタンを部分テンプレートで実装してしまいました。
<%= link_to request.referer %> = 直前に訪れたページのURL

上記の書き方だと、投稿データを削除した後に戻るボタンを押すと、直前のページがそもそも消えてしまっているので、エラーになります。

とりあえず各ページ毎に遷移先を指定した戻るボタンを作成した方が良いという事は間違いないです。

今回は、部分テンプレートに上記のようにコントローラー毎に遷移先が分岐するように条件文を記載して回避しました。

case文は、モデル名やコントローラー名で分岐する事も出来ますし、コントローラーのアクション名と細かく指定する事も可能です。

まとめ

良くない例として書き残しておきます。

Discussion