【Ruby on Rails】パンくずリストに検索結果をのせる方法
目次
今回したいこと
↑ここのパンくずリストの部分です。
パンくずリストのgemの種類
Ruby on Railsのパンくずリストにはgemが二つあります。
それはgem “gretel” と
gem “breadcrumbs_on_rails” です。
今回はgem “gretel” を使いたいとおもいます。
gem “gretel” を使おう!
とりあえず、gem “gretel” をGemfileに記述して
ターミナル上でbundle install。
rails generate gretel:installをターミナルに記載すると、
config/breadcrumb.rbのファイルが生成されます。
使い方は簡単!
config/breadcrumb.rbのファイルにメインとなる
記述をします。
crumb :root do link "【リンクとなる名前】", root_path end
root_pathはターミナルでrake routesして出てきた
pathを記載。
search用のパンくずも書きます。
pathを指定しているのでitemsコントローラーの
serchアクションに渡されている
paramsの値を【リンクとなる名前】の場所に
当てはめることで検索結果が反映されます。
# items#search crumb :items_search_123 do link params["keyword"], items_search_123_path parent :root end
この時、paramsがとれているかわからないときは、
binding.pryで確認することをおすすめします!
こちらのparent :rootで
メインページ > 【リンクとなる名前】 の
メインページの部分をはりつけています。
次にgretel用のファイルを作って
条件分岐をファイル内でします。
- if controller.controller_name == "items" && controller.action_name == "search" - breadcrumb :items_search_123 = breadcrumbs separator:" › "
コントローラーで条件分岐させることで
他のファイルに貼り付ける時に
gretel用のファイルの名前だけで
どこにでも貼り付けれます。
ついでに!!
crumb :item do |name| @item=Item.find(params[:id]) link @item.name, item_path parent :root end
このようにコントローラーがしてくれている
こともパンくず内でできるよ。
これを使えばある一つのアイテムを表示している時も
その名前がパンくずに反映することもできるよ。
ではではまた会う日まで〜