0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails 爆速でパンくずリストを作成する

Posted at

パンくずリストとは

超簡単に言うと、ページ遷移を視覚的に表示してくれるものです。
導入する目的としては主にSEO対策とUIの向上でしょうか。

その辺は「パンくずリスト」とかで調べると死ぬほど出てくるので、それを見ると良いと思います。

gretelというGem

Railsの場合、gretelというGemを導入することで、爆速でパンくずリストを作成できます。

gretelはリンクを設置したリストを画面に表示する機能を実装できます。

ということでいつも通り


gem "gretel"

Gemfileに記述して、いつも通りbundle install(DB作成後はサーバーの立ち上げ直しも)

rails g gretel:install

これでgretelをインストールします。

インストールしたらconfig/breadcrumbs.rbが自動で作成されます。

breadcrumbs.rbの記述

config/breadcrumbs.rb
#rootは自動で作成されている
crumb :root do
  link "Home", root_path
end

#ここから追記する

crumb "現在のページ名(表示させるビューにもページ名記述)" do
  link "パンくずリストでの表示名", "アクセスしたいページのパス"
  parent :親要素のページ名(前のページ)
end

#例
crumb :tweets do
  link "ツイート一覧", tweets_index_path
  parent :root
end

crumb :contacts do
  link "コンタクト", contacts_index_path
  parent :tweets
end

これでパンくずリストの表示設定ができたので、あとはこれを各種ビューに表示させればOK

ビューへの追記

views/layouts/application.html.erb
<!DOCTYPE html>
<html>
 <head>
   <title>Breadcrumb</title>
   <%= csrf_meta_tags %>
   <%= csp_meta_tag %>
   <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
   <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
 </head>
 <body>
   #追記
   <%= breadcrumbs separator: " &rsaquo; " %> 
     #追記ここまで
   <%= yield %>
 </body>
</html>

separator: " ›”は、パンくず間の区切りである「>」を示します。

パンくずを表示したいViewに

<% breadcrumb :root %>
#rootのところはconfig/breadcrumbs.rbで作成した名前

これでパンくずリストは作成完了です。

Image from Gyazo

めっちゃ簡単かつWEBアプリケーションとして必要な機能でもあるので、導入する時のコスパは高いですね。
個人的にはこういう簡単で、効果が高い機能は大好きです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?