はじめに
久しぶりに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
)
購入明細一覧ページ(url: http://localhost:3000/orders
)
終わりに
これが最善な方法かはわかりませんが、以前あのポートフォリオを作っていたときに
やったことがあるやり方だったのでやってみました。
他にいい方法があればそれも試してみたいと思います。