パンくず実装の続きです。
といっても備忘録としての記事ですので、ほぼほぼサイトを参照してやったことを思い返すつもりで書いています。
ちなみに今回は、lib直下をいじりますので、少し習ったことがないことをしました。
ではでは、やっていきましょうか
まずは、custom builder を作りましょう。
といってもこの名称はなんでも良いです。
ただし、ほぼほぼコードの直打ちで作りますよ。
class CustomBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
def render
@context.render '/shared/breadcrumbs', elements: @elements
end
end
これは、views/sharedフォルダにオリジナルのviewを呼びにいっているという記述です。
render形式のため、elements:@elementsの要素をbreadcrumbs.html.hamlへ送っています。
shardフォルダにrenderさせるファイルを纏めているので、そこを呼んでいますが、別に場所はどこでも良いです。
- if elements.present?
%ul.l-gretel-brock
- elements.each do |element|
%li.l-gretel-inline
- if element.path.present?
= link_to element.name ,element.path, class: 'l-gretel-link u-deco-none'
= fa_icon 'chevron-right', class: 'l-gretel-icon'
- else
= element.name
= elements.last.name
と書きますわね。CSSは適当煮付けてくださいな。
(gretelって名称使ってるけどむしろわかりづらいような・・・)
そして、使いたいところに、以下の一文を追加する。
= render_breadcrumbs builder: ::CustomBreadcrumbsBuilder
最後に、config/application.rbに以下の一文を追加しよう。
module Test
class Application < Rails::Application
config.autoload_paths += %W(#{config.root}/lib) #ここの一文だけだよ!
end
これはローカル上で、lib直下にあるファイルを呼びに行きますよということです。
ここまでできれば一安心、早速みてみよう!
いかのように表示されました。
fa_iconが良い感じです。
ここまでやってみてダメだった人は、rails s
して再起動、もしくは bandle install
を試してみよう。
私は意外と忘れるアプリケーションサーバーの再起動は盲点でした。
あ、あと本番環境は、以下の一文追加必要ですので、ご注意ください。
いくつか文章探しましたが、これでやっと通った感じです。
Rails.application.configure do
###いっぱい文章ありましたが省略
config.eager_load_paths += %W( #{config.root}/lib )
end
これで、デプロイしても問題ないはず!
試してみてください。
ちなみに参考した記事は以下の通り、私もtech:expert生です。
https://pg-happy.jp/rails-pankuzu-list.html