LoginSignup
12
13

More than 5 years have passed since last update.

gretel のパンくずリストの情報をtitleタグでも使う

Last updated at Posted at 2015-10-09

gretelを使ってパンくずリストを作っていたところ、この情報をtitleタグに表示できたら便利だと思いました。似た情報を二重管理せずにすみます。

普通に gretel のパンくずリストの情報を定義しておく

config/breadcrumbs.rb
crumb :root do
  link 'ホーム', root_path
end

crumb :users do
  link 'ユーザーリスト', users_path
end

crumb :user do |user|
  link user.name, user_path(user)
  parent :users
end

パンくずリストをタイトルタグに流用するための仕組み

app/views/layouts/application.html.haml
!!!
%html
  %head
    %title= content_for?(:title) ? yield(:title) : "MyApp"
    -# 以下省略
  # こんなメソッドを作って gretel のヘルパーメソッド breadcrumb の代わりに使う
  def breadcrumb_with_title(*args)
    breadcrumb(*args)
    # タイトルが明示的に指定されてなければ、パンくずリストのテキストを使う
    content_for(:title, "#{breadcrumbs.links.last.text} | MyApp") unless content_for?(:title)
  end

各ページでは breadcrumb の代わりに breadcrumb_with_title を使う

app/views/users/index.html.haml
- breadcrumb_with_title :users
-# (以下省略)
app/views/users/show.html.haml
- breadcrumb_with_title :user, @user
-# (以下省略)

パンくずリストとは違うタイトルをつけたければ、 content_for で明示的に指定する。

app/views/users/index.html.haml
- content_for :title, 'なんか違うタイトル'
- breadcrumb_with_title :users
-# (以下省略)

余談

gretelのヘルパーメソッドの名前が似てて間違えそうになる。

  • breadcrumb ページのパンくずを指定する
  • breadcrumbs パンくずリストをレンダリングする

よく間違う人がいるのか、間違ってませんか?ってエラーメッセージを出すようになっている

12
13
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
12
13