LoginSignup
0
0

More than 3 years have passed since last update.

gretelを用いたパンくず機能の実装方法

Posted at

スクリーンショット 2020-10-14 12.49.19.png

What: パンくず機能とは

パンくず機能とはウェブページの上部でよく見かけるこの表示のことです!!
スクリーンショット 2020-10-14 12.49.19.png

Why: なぜパンくず機能を実装するのか

パンくず機能とはウェブページにおいてユーザーが現在どのページにいるかを視覚的に確認しやすくするための機能です。

How: どうやって実装するのか

step 1: gemfileの導入

ここでは'gem gretel'をgemfileに追加し、bundle installを実行しましょう。

gem 'gretel'
$ bundle install

step 2: 設定ファイルの作成

bundle installが完了したらrails generate gretel:installを実行しましょう。
すると、configディレクトリにbreadcrumbs.rbが生成されます。
これが設定ファイルになります。

$ rails generate gretel:install

step 3: 設定ファイルの記述

生成されたbreadcrumbs.rbに記述していきます。

今回はアイテム変数を用いて階層構造になっているカテゴリの親、子、孫要素をそれぞえ取得して表示させたいと思います。
:warning:ここで一点注意なのですが、ビューで引数に@item変数を引き渡すことに加えて、子要素以降のcrumbのparentに変数itemを追記しないとエラーが発生します!
(原因はわからず、、教えていただけると幸いです!)


crumb :root do
  link 'FreeMa', root_path
end

crumb :parent_category do |item|
  link item.category.parent.parent.name, root_path
  parent :root
end

crumb :child_category do |item|
  link item.category.parent.name, root_path
  parent :parent_category, item
end

crumb :grandchild_category do |item|
  link item.category.name, root_path
  parent :child_category, item
end

crumb :current_product do |item|
  link item.name
  parent :grandchild_category, item
end

step 4: ビューの記述

    - breadcrumb :parent_category, @item
    - breadcrumb :child_category, @item, class: 'content'
    - breadcrumb :grandchild_category, @item, class: 'content'
    - breadcrumb :current_product, @item, class: 'current'
    = breadcrumbs separator: "  ›  "

step 5: ビューの調整

cssで見た目を整えれば、、、

完成!!

かなり説明を省いてしまいましたが
公式ドキュメントに詳しい説明がありますので、是非一読を!
【参考記事】
パンくずリストの実装
【Rails】gretelを使ってパンくずリストを作成
一番わかりやすいパンくずの実装(gem 'gretel')

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