プログラミング学習 備忘録

Railsを学習していく上での技術メモ。学んだことや解決したエラーなどを記録していきます。

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つ以上ある時などに有効。