質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1484閲覧

kaminariのページネーションが切り替わらない

danburudoa

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/04/21 08:50

##解決したいこと
現在掲示板アプリを作成中で、Gemの'kaminari'でページネーションを投稿機能の詳細ページで表示しています。投稿機能の詳細ページでは、投稿とそれに対するコメントが表示でき、コメント数に応じてページを増やすようにしたいです。しかし、実際には、切り替えボタンを押しても、同じ画面のままになってしまうので、何かご教授いただければと思います。

##問題があるところの動画

https://gyazo.com/ac56664dec892a761cd5cf747e9546a9

##ソースコード

boards_controller (投稿機能) def show @comment = Comment.new @comments = @board.comments.includes(:user) @comment_page = Comment.all.page(params[:page]).per(10) end
show.html.erb <div class="main-show"> <div class="topic-wrap-show"> <ol class="bread-wrap"> <li class="bread-main"> <%= link_to "ホーム", root_path ,class: :bread_show %> <meta itemprop="position" content="1" /> </li> <li class="bread-main"> <%= link_to "#{@board.title}",class: :bread_show %> <meta itemprop="position" content="2" /> </li> <% if user_signed_in? && current_user.id == @board.user_id %> <div class="board__manage"> <%= link_to "編集する", edit_board_path(@board), class: :board__btn %> <%= link_to "削除する", board_path(@board.id), method: :delete, class: :board__btn %> </div> <% end %> </ol> <div class="head-area"> <%= image_tag (@board.image), class: :show_img %> <div class="head-right"> <h1><%= "#{@board.title}"%></h1> <h3 class="show_text"><%= "#{@board.text}"%></h3> <p class="comment"><span class="icon-comment"></span><%= @board.comments.count %><span>コメント</span><span class="datetime"><%= l @board.created_at %></span></p> <a href="#form" class="btn btn-positive">コメントを投稿する</a> </div> </div> <!---ページネーション---> <%= paginate @comment_page%> <div class="board__comments"> <ul class="comments_lists"> <% if @comments %> <% @comments.each do |comment| %> <li class="comments_list"> <div class="comments_wrap"> <p> <%= link_to "#{comment.user.nickname}", class: :comment_user %> <%= l comment.created_at%> </p> <p class="comment_text"><%= comment.text %></p> </div> </li> <% end %> <% end %> </ul> <% if user_signed_in? %> <%= form_with(model: [@board, @comment], local: true ,class: :show_comment ,id: :form) do |f| %> <%= render 'shared/error_messages', model: f.object %> <div class="field"> <%= f.label :text, "コメントを投稿する",class: :show__text %><br /> <%= f.text_area :text ,class: :show__btn%> </div> <div class="actions"> <%= f.submit "送信する", class: :form__btn %> </div> <% end %> <% end %> </div> </div>

言っていただければ、コードを追加するので、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pagenate は @comment_page に対してやっているのに、表示しているのは @comments.each do |comment| と @comments だからです。
こちらは常に同じものを読み込んでますから

投稿2021/04/21 09:40

winterboum

総合スコア23401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

danburudoa

2021/04/23 14:21

回答ありがとうございます。 def show @comment = Comment.new @comments = @board.comments.order(created_at::desc).includes(:user).all.page(params[:page]).per(10) end 表示したい部分を、<%= paginate @comments%>としました。 このように書き換えたら表示できました。@commentsが長くなりなりすぎたのですが、コードが長くなることで、他に問題とか起こることはあるのでしょうか?
winterboum

2021/04/23 14:34

いや、問題は無いです。読みにくいぐらいのこと。 なお、allは不要です。
danburudoa

2021/04/23 14:35

ずっと解決できなかったので、助かりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問