12/18 本日学んだこと(パンくず、nilガード)
パンくずについて
パンくずとは自分がwebサイトのどの場所にいるのかを階層構造で表示したもの。 ユーザビリティの向上やseo対策にもなる。 Railsでは、Gem:gretelを使うことで簡単に実装できる。
参考url 【Rails】gretelを使ってパンくずリストを追加してみる。 - Qiita
nilガード
nilを防ぐための書き方はいくつかある
body.to_s
body ||= ''
2番目の||=
の方がスマートであり、空文字を明示しているので推奨されている。
RSpec
要素のテストについて
当初の自分のコード
it 'タグ一覧画面に Home > タグ というパンくずが表示されている' do visit admin_tags_path expect(page).to have_selector '.breadcrumb', text: 'Home' expect(page).to have_selector '.breadcrumb', text: 'タグ' end
下のコードでも実装できる。
fit 'タグ一覧画面に Home > タグ というパンくずが表示されている' do visit admin_tags_path within('.breadcrumb') do expect(page).to have_content 'Home' expect(page).to have_content 'タグ' end end
Withinでそのセレクタの中の要素を色々検証できるのでこっちの方がDRYで汎用性も高そう。
it 'Home のパンくずをクリックした時にダッシュボード画面に遷移すること' do visit admin_tags_path within('.breadcrumb') do click_link 'Home' end expect(current_path).to eq(admin_dashboard_path) end
このようにその中のリンクをクリックする時にも使える。 Homeリンクが同じページ内に2つ以上ある時などに有効。