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

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

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

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

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

0回答

1815閲覧

Ruby on Railsで表示順を並べ替えたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2020/01/06 06:17

Ruby on Rilasでチャット機能を作っているのですがチャット一覧画面での表示順の変え方がよくわかりません。
メッセージが新しい順に表示するにはどのようにしたら良いのでしょうか。
チャットルームが生成された順に表示する .order(created_at: :desc) は分かるのですがメッセージがあたら良い順にチャットルームの表示順を並べ替えるにはどのようにしたら良いのでしょうか。
詳しい方教えていただけると幸いです、

###chat_controller.rb

class ChatController < ApplicationController def create current_user_chat_rooms = ChatRoomUser.where(user_id: current_user.id).map(&:chat_room) chat_room = ChatRoomUser.where(chat_room: current_user_chat_rooms, user_id: params[:user_id]).map(&:chat_room).first if chat_room.blank? chat_room = ChatRoom.create ChatRoomUser.create(chat_room: chat_room, user_id: current_user.id) ChatRoomUser.create(chat_room: chat_room, user_id: params[:user_id]) end redirect_to action: :show, id: chat_room.id end def index @current_user = current_user chat_room = ChatRoom.find_by(id: params[:id]) @chat_rooms = ChatRoom.joins(:chat_room_users). where("chat_room_users.user_id =?", @current_user.id) @chat_messages = ChatMessage.where("chat_room_users.user_id =?", @current_user.id) end def show chat_room = ChatRoom.find_by(id: params[:id]) @current_user = User.find_by(id: session[:user_id]) @chat_room_user = chat_room.chat_room_users. where.not(user_id: current_user.id).first.user @chat_room_myuser = chat_room.chat_room_users. where.not(user_id: current_user.id).last.user @chat_rooms = ChatRoom.joins(:chat_room_users). where("chat_room_users.user_id =?", @current_user.id) @chat_messages = ChatMessage.where(chat_room: chat_room).order(:created_at) end end

###chat_room.rb

class ChatRoom < ApplicationRecord has_many :chat_messages has_many :chat_room_users end

###chat_room_user.rb

class ChatRoomUser < ApplicationRecord belongs_to :chat_room belongs_to :user end

###index.html.erb

<% @chat_rooms.each do |e| %> <%= link_to chat_path(e.id), method: :get do%> <div class="chat-user"> <img src=<%= e.chat_room_users.last.user.image %> class = "dm-icon"> <p class="dm-username-show"><%= e.chat_room_users.last.user.username %></p> <p class="dm-user-id-show">@<%= e.chat_room_users.last.user.user_id %></p> <% if e.chat_messages.blank? %> <% else %> <span class="dm-last-time">・<%= time_tag(e.chat_messages.last.created_at) %></span> <% end %> <% if e.chat_messages.blank? %> <p class="chat-show">メッセージはありません</p> <% else %> <p class="chat-show"><%= e.chat_messages.last.message %></p> <% end %> </div> <% end %>

###show.html.erb

<% provide(:title, @chat_room_user.username ) %> <div class="container center"> <div class="sidebar"> <%= link_to root_path(), method: :get do%> <div class="home-btn"> <%= image_tag 'right-nav/home', class: 'home-img' %> <span class="home-p">ホーム</span> </div> <% end %> <%= link_to home_path(), method: :get do%> <div class="global-btn"> <%= image_tag 'right-nav/global', class: 'global-img'%> <span class="global-p">グローバル</span> </div> <% end %> <% if current_user.try(:admin?) %> <%= link_to rails_admin_path(), method: :get do%> <div class="control-btn"> <%= image_tag 'right-nav/control.svg', class: 'control-img'%> <span class="control-p">管理画面</span> </div> <% end %> <% end %> <div class="group-btn"> <%= image_tag 'right-nav/group', class: 'group-img'%> <span class="group-p">グループ</span> </div> </div> <div class="main"> <% if @chat_room_myuser.id == @chat_room_user.id %> <header class="header"> <div class="chatPartner"> <img src="<%= @chat_room_user.image %>" class="dm-icon"> <div class="dm-username"><%= @chat_room_user.username %></div> <div class="dm-userid">@<%= @chat_room_user.user_id %></div> </div> </header> <div class="chat-history"> <%= render @chat_messages %> <% @chat_rooms.each do |e| %> <%= e.id %> <% end %> </div> <div class="text-box"> <form class="messageInputForm"> <div class="container"> <input type="text" data-behavior="room_speaker" class="messageInputForm_input" placeholder="メッセージを入力..."> </div> </form> </div> </div> </div> <% else %> <div class="error-message"> <p class="sorry-chat">Sorry</p> <p class="sorry-text">ページを表示する権限がありません</p> </div> <% end %>

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問