#はじめに
Railsチュートリアル通り進めると色々なつまづきポイントがあるなと思ったので記事にします。
#will_paginate導入方法(Railsチュートリアル)
Railsチュートリアルでの導入方法は基本的に下記のとおりです。
####①必要なgem
をインストール
gem 'will_paginate', '3.1.6'
gem 'bootstrap-will_paginate', '1.0.0'
####②ページネーションしたいビューに記載
<%= will_paginate %>
<ul class="users">
<%= render @users %>
</ul>
<%= will_paginate %>
####③コントローラーに記載
def index
@users = User.paginate(page: params[:page])
end
上記一連のやり方では、僕の環境下ではなにかとうまくいかなかったです。
・Ruby 2.7.0
・Rails 6.0.2.1
・bootstrap 4.4.1
うまくいくための対応を下記します。
#ポイント1 will_paginateは'3.1.7'を使用
'3.1.6'ではエラーが発生してしまいうまくいきませんでした。
ArgumentError: wrong number of arguments (given 0, expected 1)
bundle update will_paginate
を行い、'3.1.7'へのアップデートで解決しました。
GitHub(will_paginate)に今回と同じエラー文の記載がありました。
Railsのバージョン(5.2.2.1 and 6.0.0.beta2+)によってはコンフリクトするエラーがあったようです。
#ポイント2 will_paginate-bootstrap4を入れる
ページネーションのボタンの表示には成功しましたが、
bootstrap
のデザインが適用されませんでした。
これもGitHub(
will_paginate-bootstrap4)に答えがありました。
Bootstrap4
にマッチするgem
が別にあるようです。
README.md
記載の通りにインストールし、ビューに下記のように記載して解決。
= will_paginate(@users, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
#その他 ちょっとした注意点
###①slimで記載するときはインデントに注意
とても基本的ですが、僕はこれでちょっとつまづきました。
= will_paginate(@users, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
.row.users
= render @users
= will_paginate(@users, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
= will_paginate(@users, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
.row.users
= render @users
= will_paginate(@users, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
###②サーバーの再起動を忘れずに
これはRailsチュートリアルにも書いてありますね。
#まとめ
僕と同じつまづきをした方の参考になりましたら幸いです。
バージョンが違えば挙動も異なる。
今回を機に、GitHubを確認する習慣をつけようと思います。