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

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

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

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

2569閲覧

Ajaxを用いた非同期投稿を降順に並び替えたい。&1ページの表示数を制限したい

tmy1496

総合スコア3

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2020/07/27 02:29

前提・実現したいこと

現在Ruby on rails を用いて、SNSアプリを制作中です。
アプリケーション制作のなかで、Twitterのような、つぶやき機能を実装しようとしています。
新しい投稿から上に表示されるように表示させたいです。

発生している問題・エラーメッセージ

リロードをすると降順に表示されます。 リロードをしなければ、昇順表示かつ、過去の投稿が1ページに全部羅列されてしまいます。 1ページに全ての投稿が表示されてしまうため、スクロールが大変になってしまいます。

該当のソースコード(index.html.erb)

<div class="container mt-5"> <div class="row"> <div class="col-3 sidebar"> <h4><br>あなたの1日の目標を宣言したり、目標をメモしたりしてみてください。<br> 書くことで、より実現の可能性が高まると言われています!</h4> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal"> 目標を宣言する! </button>  </div> <div class="col-9 sidebar recipes"> <%= render 'recipes', recipes: @recipes %> </div> </div> </div> <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">   <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">この1日にやりたいこと</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <%= form_for @recipe, remote: true do |f| %> <div class="modal-body"> <div class="form-body"> <div class="form-group"> <%= f.label :title, "タイトル" %> <%= f.text_field :title, class:"form-control" %> </div> <div class="form-group"> <%= f.label :body, "本文" %> <%= f.text_area :body, class:"form-control"%> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">閉じる</button> <%= f.hidden_field :user_id, :value => current_user.id %> <%= f.submit "投稿する", class:"btn btn-primary" %> </div> </div> <% end %> </div> </div> </div>

該当のソースコード(create.js.erb)

("textarea").val(""); $("input").val(""); $("#exampleModal").modal("hide") $(".modal-backdrop").remove(); $(".recipes").html("<%= escape_javascript(render 'recipes',recipes: @recipes)%>")

該当のソースコード(_recipes.html.erb)

<% recipes.each do |recipe| %> <div class="card mb-1"> <div class="card-body"> <h4><%= simple_format recipe.body%></h4> <p class="card-text"><%=recipe.title%></p> <p class="trim-image-to-circle"> <%= link_to user_path(recipe.user_id) do %> <%=attachment_image_tag recipe.user, :profile_image, class:"profile-img-circle", size:"10x10",fallback: "no_image.jpg", size:'60x60' %> <%= recipe.user.name %>さん <% end %> </p> <i class="far fa-edit">おたけび時間</i> <%= recipe.created_at.strftime('%m月%d日%H:%M:%S')%> </div> </div> <% end %>

該当のソースコード(recipes_controller.rb)

class RecipesController < ApplicationController def index @recipes = Recipe.page(params[:page]).per(5).order('updated_at DESC') @recipe = Recipe.new end def create Recipe.create(recipe_params) @recipes = Recipe.all end def show @recipe = Recipe.find(params[:id]) end def recipe_params params.require(:recipe).permit(:title, :body, :user_id) end end

試したこと => 3つあります。

① 
_recipes.html.erbに
<%=pagenation%>を設置


def index
@recipes = Recipe.page(params[:page]).per(5).order('updated_at DESC')
@recipe = Recipe.new
end
上記を記載し、1ページに表示される投稿数を制限&並び替え


turbolinkの削除を試してみました。

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

rails2.5.7

拙い文章ですが、ご協力いただけると幸いです。

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

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

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

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

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

no1knows

2020/07/27 05:48

・いつでも新しい投稿から上に表示されるように表示させたい ・1ページ20つぶやきなどとし、ページネーションを利用したい ということでしょうか?
tmy1496

2020/07/27 07:04

回答ありがとうございます! その通りです!!
guest

回答1

0

ベストアンサー

・いつでも新しい投稿から上に表示されるように表示させたい
・1ページ20つぶやきなどとし、ページネーションを利用したい

定番のkaminariを利用するのはいかがでしょうか?

公式:https://github.com/kaminari/kaminari
参考:https://qiita.com/residenti/items/1ae1e5ceb59c0729c0b9

投稿2020/07/28 01:31

no1knows

総合スコア3365

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

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

tmy1496

2020/07/28 03:14

ありがとうございます! 解決できました!
no1knows

2020/07/28 06:03

それは良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問