🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Q&A

解決済

1回答

790閲覧

縦に2分割したページで片側のみページネーションさせると、もう片方の画面が何も表示されなくなる

HIRO76

総合スコア9

Ruby on Rails 5

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

0グッド

1クリップ

投稿2019/12/06 08:35

編集2019/12/09 01:20

前提・実現したいこと

Rails学習で簡単な記事投稿Appを作成しています。自身で調べつつ、試行錯誤しましたが解決には至らなかった為、こちらで質問させていただきます。

縦に2分割したページで、左は固定ビュー、右は記事一覧が10件ほど縦に並んでいます。
右ページのみページネーションを実装し、nextページへいくと左ページが何も表示されなくなります。これを解消して元々設定してある固定ビューを表示させたいのですが、可能でしょうか?
また、可能であれば手段としてはどのようなものが適切でしょうか?

補足情報(FW/ツールのバージョンなど)

Rails 5.2
gem 'kaminari'(ページネーション用)

slim

1/ ヘッダーここから 2.header-bg.sticky-top 3 .header.navbar 4 = link_to "Fishtweet", root_path, class: "my-2 h3 text-white text-decoration-none" 5 ul.nav 6 - unless user_signed_in? 7 li.nav-item 8 = link_to "ログイン", new_user_session_path, class: "nav-link text-white" 9 li.nav-item 10 = link_to "新規登録", new_user_registration_path, class: "nav-link text-white" 11 - else 12 li.nav-item 13 = link_to "マイページ", user_path(current_user), class: "nav-link text-white" 14 li.nav-item 15 = link_to "ログアウト", destroy_user_session_path, method: :delete, class: "nav-link text-white" 16/ ヘッダーここまで 17 18 19/ コンテンツ ここから 20.contents.d-flex.justify-content-end.vh-100 21 / leftcontents 22 .left-content.w-50 23 .article.card.h-100 id="append_to" 24 = image_tag @article.images.first.variant(resize: "450x400").processed, class: "article-img img-fluid shadow-sm" 25 .article-description.card-body.p-1 26 h5.card-title.m-0 27 = @article.title.truncate(10, omission: '…') 28 p.card-text.m-0 29 = @article.user.nickname 30 p.card-text 31 = @article.body.truncate(100, omission: '…') 32 = link_to "続きを読む", article_path(@article), class: "btn btn-outline-dark rounded-pill float-right" 33 34 / rightcontents 35 .right-content.w-50.overflow-auto.vh-100 36 - @articles.each do |article| 37 = link_to article_path(article), class: "text-dark text-decoration-none" do 38 .article-list.card.m-4.shadow-sm 39 .row 40 .article-list-img.col-4 41 - if article.images.count > 0 42 = image_tag article.images.first.variant(resize: "150x150").processed, class: "article-list-img" 43 .article-list-description.card-body 44 h5.card-title 45 = article.title 46 .pagenate.font-weight-bold.text-monospace.mx-auto.mb-5.d-flex.justify-content-center id="page" 47 = paginate(@articles) 48 49 .archive.m-5 50 h5 アーカイブ 51 ul.list-group.list-group-flush 52 = link_to "#", class: "text-dark text-decoration-none" 53 li.list-group-item 2019/10 54 = link_to "#", class: "text-dark text-decoration-none" 55 li.list-group-item 2019/9 56 = link_to "#", class: "text-dark text-decoration-none" 57 li.list-group-item 2019/8 58 = link_to "#", class: "text-dark text-decoration-none" 59 li.list-group-item 2019/7 60 61 .embed-responsive.embed-responsive-16by9.mb-5 62 iframe.embed-responsive-item src="https://www.youtube.com/embed/eo_s9aynXSw?rel=0" 63 64 .right-content-footer.border-top.mx-auto.mb-3.w-75.d-flex.justify-content-around 65 = link_to "#" 66 i.fab.fa-facebook-f.fa-lg.pt-4.text-muted 67 = link_to "#" 68 i.fab.fa-twitter.fa-lg.pt-4.text-muted 69 = link_to "#" 70 i.fab.fa-instagram.fa-lg.pt-4.text-muted 71 = link_to "#" 72 i.fab.fa-github.fa-lg.pt-4.text-muted 73/ コンテンツ ここまで 74 75 76/ フッターここから 77.footer-bg 78 .footer.page-footer.font-small.pt-3.fixed-bottom 79 .container 80 ul.list-unstyled.list-inline.text-center.py-3. 81 li.list-inline-item.text-white 82 h5.mb-1.h5 enjoy fishing 83 li.list-inline-item.text-white 84 - if current_user 85 = link_to new_article_path do 86 .btn.btn-outline-light.btn-lg.rounded-pill 投稿する 87 - else 88 = link_to new_user_session_path do 89 .btn.btn-outline-light.btn-lg.rounded-pill 投稿する 90 91 .footer-copyright.text-center.py-2.text-white.bg-dark © 2019 Copyright 92/ フッターここまで 93

slim

1/ #index.html.slim 2 3/ leftcontents 固定ページ 4 5 .left-content.w-50 6 .article.card.h-100 id="append_to" 7 = image_tag @article.images.first.variant(resize: "450x400").processed, class: "article-img img-fluid shadow-sm" 8 .article-description.card-body.p-1 9 h5.card-title.m-0 10 = @article.title.truncate(10, omission: '…') 11 p.card-text.m-0 12 = @article.user.nickname 13 p.card-text 14 = @article.body.truncate(100, omission: '…') 15 = link_to "続きを読む", article_path(@article), class: "btn btn-outline-dark rounded-pill float-right"

slim

1/ #index.html.slim 2 3/ rightcontents ページネーションページ 4 5 .right-content.w-50.overflow-auto.vh-100 6 - @articles.each do |article| 7 = link_to article_path(article), class: "text-dark text-decoration-none" do 8 .article-list.card.m-4.shadow-sm 9 .row 10 .article-list-img.col-4 11 - if article.images.count > 0 12 = image_tag article.images.first.variant(resize: "150x150").processed, class: "article-list-img" 13 .article-list-description.card-body 14 h5.card-title 15 = article.title 16 .pagenate.font-weight-bold.text-monospace.mx-auto.mb-5.d-flex.justify-content-center id="page" 17 = paginate(@articles)

ruby

1# articles_controller.rb 2 3 def index 4 @articles = Article.includes(:user).order(created_at: :desc).page(params[:page]).per(10) 5 @article = Article.last 6 end

該当箇所のコードになります。一部修正しました。
実装方法としてはJavaScriptでやるというのが最適なのでしょうか?
jQueryを少しかじった程度なのでいまいちイメージが湧きません。
参考記事等ございましたら紹介していただけると幸いです。
よろしくお願い致します。

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

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

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

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

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

winterboum

2019/12/07 02:22

できると思いますが、viewもcntrolllerも何も情報が哭いところでは助言しようがないです
winterboum

2019/12/07 05:43

viewは画面イメージではなく、app/views/* を。
HIRO76

2019/12/07 07:36

更新しました。 他必要情報あればご指摘お願い致します。
winterboum

2019/12/07 07:46

左側って .left-content.w-50 ですよね? 固定に見えないのですが。@articles を表示してますよね?
HIRO76

2019/12/07 08:04

left-contentが左側になります。 かなり無茶苦茶な記述ですが、ループで取得して最新の記事のみ表示させるようにしています。1記事には複数の画像があり、一枚だけ表示できるようにしています。 ひとまず意図した表示ができているのですが、改めて修正予定です。
winterboum

2019/12/08 22:54

indexのslim全部載せなおしてください
HIRO76

2019/12/09 01:23

ご返信ありがとうございます。 index.html.slimの全体を追加しました。 また何かありましたら、ご指摘いただけると幸いです。
HIRO76

2019/12/09 01:29

申し訳ありません。ビューのコードを修正して確認したところ、意図した実装ができていることを確認しました。 こちらの確認不足で余計な手間を取らせてしまい申し訳ありません。 コードの見直しと確認の大事さを再確認できました。ありがとうございます。
guest

回答1

0

自己解決

index.html.slimを修正したところ、こちらの意図した実装ができました。
left-contentの表示をeachで取り出していたこと自体がそもそもの原因のようです。
ご指摘をいただき設計事態を見直し、左画面は固定ページなので、単体で値を取得し、右画面が一覧となるのでeachで表示したところ解決致しました。

投稿2019/12/09 01:35

HIRO76

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問