RailsのViewで現在のパスをチェックするGemを公開しました

check_pathという、View内で現在のパスをチェックするRails用のGemを公開しました。

インストール方法

Gemfileに以下を書いてbundleするだけで使えます。

gem 'check_path'

使い方

たとえば、config/routes.rbが次のようになっているとします。

Rails.application.routes.draw do
  resources :posts, only: [:index, :new, :edit, :show]

  root 'posts#index'
end

このとき、ActionViewのヘルパーとして次のようなメソッドが追加されます。

root_path?
posts_path?
new_post_path?
edit_post_path?(:id)
post_path?(:id)

たとえば、現在のパスがposts#newかどうかは、以下のようにしてチェックします。

<% if new_post_path? %>
      :
<% end %>

なぜつくったか

ご存知の通り、このGemを使わなくても、上記のnew_post_path?は以下で実現できます。 実際、このGemの内部ではcurrent_page?を用いて処理しています。

<% if current_page?(new_post_path) %>
      :
<% end %>

ただ、check_pathを使った方が直感的に書け、かつ可読性も上がると思います。

以前からどうしてRailsにはこのメソッドがないのだろうと疑問に思っており、今回試しに実装してみました。

おわりに

このGemの思想やコードの設計に関する意見・指摘など、お待ちしております。