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

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

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

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

Q&A

解決済

1回答

610閲覧

kaminari 表示されない

tomtom1

総合スコア168

Ruby on Rails

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

0グッド

0クリップ

投稿2019/12/12 09:20

編集2019/12/13 10:02

###実現したいこと
現在、kaminariを利用し、ページネーションをしています。
あるページではできたのですが、別のページでは反応がありませんのでこちらを解決したいです。
index = うまくいっている
index2 = うまく行かない(もっと見るボタンをしても反応がない)

コード

index1

1<div id="items"> 2 <%= render 'items' %> 3</div> 4<span><%= link_to_next_page @posts, 'もっと見る',class: 'items_btn', remote: true, id: 'more_link' %></span> 5

index2

1<div id="items2"> 2 <%= render 'items2' %> 3</div> 4<span><%= link_to_next_page @posts, 'もっと見る',class: 'items_btn', remote: true, id: 'more_link' %></span>

Controller

1def index 2 @posts = Post.includes(:user).order(created_at: :desc).page(params[:page]).per(1) 3 respond_to do |format| 4 format.html 5 format.js { @post } 6 end 7end 8def index2 9 @posts = Post.includes(:user).all.order(created_at: :desc).page(params[:page]).per(1) 10 respond_to do |format| 11 format.html 12 format.js { @post } 13 end 14end

index.js.erb

js

1$('#items').append("<%= escape_javascript(render 'items', object: @posts) %>") 2$("#more_link").replaceWith("<%= escape_javascript(link_to_next_page(@posts, 'もっと見る',class: 'items_btn', remote: true, id: 'more_link')) %>"); 3$('#items2').append("<%= escape_javascript(render 'items2', object: @posts) %>") 4$("#more_link").replaceWith("<%= escape_javascript(link_to_next_page(@posts, 'もっと見る',class: 'items_btn', remote: true, id: 'more_link')) %>");

ログ(もっと見るボタンを押した後)
index→うまくいってます。
index2→反応なしです。

index

1Started GET "/posts/index?page=2" for 127.0.0.1 at 2019-12-12 18:08:29 +0900 2Processing by PostsController#index as JS 3 Parameters: {"page"=>"2"} 4 User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] 5 ↳ app/controllers/application_controller.rb:6 6 Rendering posts/index.js.erb 7 Post Load (0.3ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."created_at" DESC LIMIT ? OFFSET ? [["LIMIT", 1], ["OFFSET", 1]] 8 ↳ app/views/posts/_items.html.erb:1 9 User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? [["id", 1]] 10 ↳ app/views/posts/_items.html.erb:1 11 User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 12 ↳ app/models/post.rb:15 13 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 14 ↳ app/models/post.rb:15 15 Rendered posts/_items.html.erb (4.8ms) 16 (0.1ms) SELECT COUNT(*) FROM "posts" 17 ↳ app/views/posts/index.js.erb:2 18 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 19 ↳ app/models/post.rb:15 20 User Exists (0.3ms) SELECT 1 AS one FROM "users" INNER JOIN "friendships" ON "users"."id" = "friendships"."followed_id" WHERE "friendships"."follower_id" = ? AND "users"."id" = ? LIMIT ? [["follower_id", 2], ["id", 1], ["LIMIT", 1]] 21 ↳ app/models/user.rb:32 22 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 23 ↳ app/models/post.rb:15 24 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 25 ↳ app/models/post.rb:15 26 Like Load (0.3ms) SELECT "likes".* FROM "likes" WHERE "likes"."user_id" = ? AND "likes"."post_id" = ? LIMIT ? [["user_id", 2], ["post_id", 4], ["LIMIT", 1]] 27 ↳ app/views/posts/_storyitems.html.erb:19 28 (0.2ms) SELECT COUNT(*) FROM "likes" WHERE "likes"."post_id" = ? [["post_id", 4]] 29 ↳ app/views/posts/_storyitems.html.erb:28 30 Favorite Load (0.2ms) SELECT "favorites".* FROM "favorites" WHERE "favorites"."user_id" = ? AND "favorites"."post_id" = ? LIMIT ? [["user_id", 2], ["post_id", 4], ["LIMIT", 1]] 31 ↳ app/views/posts/_storyitems.html.erb:30 32 (0.1ms) SELECT COUNT(*) FROM "favorites" WHERE "favorites"."post_id" = ? [["post_id", 4]] 33 ↳ app/views/posts/_storyitems.html.erb:39 34 Comment Load (0.5ms) SELECT "comments".* FROM "comments" WHERE "comments"."user_id" = ? AND "comments"."post_id" = ? LIMIT ? [["user_id", 2], ["post_id", 4], ["LIMIT", 1]] 35 ↳ app/views/posts/_storyitems.html.erb:41 36 (0.3ms) SELECT COUNT(*) FROM "comments" WHERE "comments"."post_id" = ? [["post_id", 4]] 37 ↳ app/views/posts/_storyitems.html.erb:46 38 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 39 ↳ app/models/post.rb:15 40 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 41 ↳ app/models/post.rb:15 42 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 43 ↳ app/models/post.rb:15 44 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 45 ↳ app/models/post.rb:15 46 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 47 ↳ app/models/post.rb:15 48 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 49 ↳ app/models/post.rb:15 50 Rendered posts/_storyitems.html.erb (23.4ms) 51 Rendered posts/index.js.erb (35.3ms) 52Completed 200 OK in 50ms (Views: 42.7ms | ActiveRecord: 3.0ms) 53

index2

1Started GET "/posts/index2?page=2" for 127.0.0.1 at 2019-12-12 17:47:44 +0900 2Processing by PostsController#index2 as JS 3 Parameters: {"page"=>"2"} 4 User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] 5 ↳ app/controllers/application_controller.rb:6 6 Post Load (0.5ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" IS NULL LIMIT ? [["LIMIT", 1]] 7 ↳ app/controllers/posts_controller.rb:31 8 (0.3ms) SELECT COUNT(*) FROM "posts" WHERE "posts"."user_id" = ? [["user_id", 2]] 9 ↳ app/controllers/posts_controller.rb:32 10 (0.2ms) SELECT COUNT(*) FROM "likes" WHERE "likes"."post_id" IS NULL 11 ↳ app/controllers/posts_controller.rb:33 12 (0.3ms) SELECT COUNT(*) FROM "favorites" WHERE "favorites"."post_id" IS NULL 13 ↳ app/controllers/posts_controller.rb:34 14 (0.3ms) SELECT COUNT(*) FROM "comments" WHERE "comments"."post_id" IS NULL 15 ↳ app/controllers/posts_controller.rb:35 16 Rendering posts/story.html.erb 17 (0.4ms) SELECT COUNT(*) FROM "users" INNER JOIN "friendships" ON "users"."id" = "friendships"."followed_id" WHERE "friendships"."follower_id" = ? [["follower_id", 2]] 18 ↳ app/views/posts/index2.html.erb:3 19 Post Load (0.4ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."created_at" DESC LIMIT ? OFFSET ? [["LIMIT", 1], ["OFFSET", 1]] 20 ↳ app/views/posts/_storyitems.html.erb:1 21 User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? [["id", 1]] 22 ↳ app/views/posts/_storyitems.html.erb:1 23 User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 24 ↳ app/models/post.rb:15 25 User Exists (0.2ms) SELECT 1 AS one FROM "users" INNER JOIN "friendships" ON "users"."id" = "friendships"."followed_id" WHERE "friendships"."follower_id" = ? AND "users"."id" = ? LIMIT ? [["follower_id", 2], ["id", 1], ["LIMIT", 1]] 26 ↳ app/models/user.rb:32 27 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 28 ↳ app/models/post.rb:15 29 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 30 ↳ app/models/post.rb:15 31 Rendered posts/_storyitems.html.erb (8.2ms) 32 (0.2ms) SELECT COUNT(*) FROM "posts" 33 ↳ app/views/posts/story.html.erb:14 34 Rendered posts/story.html.erb (19.5ms) 35Completed 200 OK in 91ms (Views: 29.5ms | ActiveRecord: 3.5ms)

###試したこと
あえて、index1のrenderをitems2(index2のもの)にした場合、renderもページネーションもうまくいきます。ですが現状、原因を把握できずにいます。

index1

1<div id="items2"> 2 <%= render 'items2' %> 3</div> 4<span><%= link_to_next_page @posts, 'もっと見る',class: 'items_btn', remote: true, id: 'more_link' %></span>

ご指摘宜しくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

単純にjsファイルをindex.js.erbとindex2.js.erbに分けて作成するということでした。

投稿2019/12/13 10:03

tomtom1

総合スコア168

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問