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

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

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

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

Ruby

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

Q&A

解決済

1回答

496閲覧

トークルームにいる相手ユーザーの名前を取得したい

kkk11

総合スコア23

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2019/03/31 09:05

前提・実現したいこと

Railsでメッセージ機能の開発中で、LINEのように誰とトークしているか相手の名前を表示したいと考えています。
また、最新のメッセージを取得して以下のようにgroup一覧画面に表示したいと考えています。

「太郎」と書いている箇所に相手の名前。
「こんにちは」と書いている箇所に最新のメッセージを10字ほど表示。
という形にしたいです。
イメージ説明

前提としてテーブルは4つあります。
・Userテーブル

・Groupテーブル
id

・Messageテーブル
message
user_id
group_id

・Group_userテーブル
user_id
group_id

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

ログインユーザーの名前は取得できるのですが、トーク相手の名前とそのトークルームでのメッセージが取得できないです。

該当のソースコード

group_controller.rb

ruby

1class GroupsController < ApplicationController 2 3 def index 4 @currentGroupUsers = current_user.group_users 5 myGroupIds = [] 6 7 @currentGroupUsers.each do |c_user| 8 myGroupIds << c_user.group.id 9 end 10 end 11 12 def create 13 end 14end 15

groups/index.html.erb

<div class="group-wrap"> <div class="group-around"> <% current_user.groups.each do |group| %> <div class="each-message"> <div class="your-img"> <p> <%= image_tag("user.png", :alt => "募集者の画像", :class => "user-pic") %> </p> </div> <%= link_to group_messages_path(group) do %> <div class="your-content"> <div class="your-name"> <h2>太郎</h2> </div> <div class="your-message"> <!-- 30字以内--> <h2>こんにちは</h2> </div> </div> <% end %> </div> <% end %> </div> </div>

試したこと

この質問を参考にgroup_controllerを書きました。

この質問では以下のコードで相手ユーザーの情報を取得してきて、

@anotherEntries = Entry.where(room_id: myRoomIds).where('user_id != ?',@user.id)

以下のコードで相手ユーザー名を表示させているみたいですが上手くいきません。
idが見つからないとか怒られたりします。

<% @anotherEntries.each do |e| %> <%= link_to room_path(e.room.id) do %> <%= e.user.nickname %>とのDM<br> <% end %> <% end %>

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

どのようにしたら相手情報を取得できるか教えていただきたいです。
お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

myGroupIds << c_user.group.id

の部分を

ruby

1myGroupIds << c_user.group_id

に変更したら、そのエラーは回避できそうな気がします。

ちなみに、

ruby

1@currentGroupUsers.each do |c_user| 2 myGroupIds << c_user.group_id 3end 4 5# 上記3行分の処理は、次の1行で済んだ気がします 6 7myGroupIds = @currentGroupUsers.pluck(:group_id)
  • 参考

Rails: pluckでメモリを大幅に節約する(翻訳)

投稿2019/04/20 02:19

siruku6

総合スコア1382

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

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

kkk11

2019/04/20 03:07

ありがとうございます。
siruku6

2019/04/20 03:10

提案なのですが、 c_user と書いている部分は group_user にした方が意味が分かりやすくなると思います。 この変数の中に入っているのは、Group_userテーブルのレコードのようですので。 上手くいくことを祈っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問