LoginSignup
1
1

Rails7においてパスごとに表示するリンクを切り替える

Posted at

はじめに

久しぶりにQiita投稿しました。

いつもならはてなブログなんですが、たまにはいいかなと。

無駄話はこれくらいにして本題です。

# 環境

ruby-3.2.1
Rails 7.0.6

やりたいこと

同じレイアウトを使用しているときに、urlによって表示するリンクを分ける

例えば管理者画面においてapp/layouts/admin_layouts.html.erbたるものを使用していたとする。

管理者は全商品を管理する商品一覧ページと購入明細一覧ページを参照できるとする。

どちらのページも同じレイアウトを使用しているときに

商品管理ページのナビには存在する 商品一覧リンクと新規作成リンクのうち

新規作成リンクのみ購入明細一覧ページには表示させたくない。

結論

request.path.matchを使用する

今回はパスの中に/adminが入っているかで判別を行った。

    <% if request.path.match(/\/admin.*/) %>
      <%= link_to "一覧画面", admin_products_path, class: "btn btn-outline-dark" %>
      <%= link_to "新規作成", new_admin_product_path(@product), class: "btn btn-outline-dark" %>
    <% else %>
      <%= link_to "一覧画面", orders_path, class: "btn btn-outline-dark" %>
    <% end %>

実際の画像
商品一覧ページ(url: http://localhost:3000/admin/products)
スクリーンショット 2024-04-11 23.00.18.png

購入明細一覧ページ(url: http://localhost:3000/orders)
スクリーンショット 2024-04-11 22.59.30.png

終わりに

これが最善な方法かはわかりませんが、以前あのポートフォリオを作っていたときに

やったことがあるやり方だったのでやってみました。

他にいい方法があればそれも試してみたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1