前提
配列からループ分を使い自身のDMを一覧表示させようとしたのですが、一覧にDM相手の名前が1つのDMに対して2回表示されるので1つのDMに情報を1つずつ表示させたい。
発生している問題・エラーメッセージ
調べたところ@anotherEntriesが2つ存在するために2つ表示されている。
該当のソースコード
views/rooms/index.html.erb
1<div message-list> 2 <h4>メッセージ一覧</h4> 3 <p><%= render 'room', rooms: @rooms %></p> 4</div>
views/rooms/_room.html.erb
1<div class = 'dm-list'> 2 <% @rooms.each do |room| %> 3 <div style='width: 200px; border:solid 1px gray'> 4 <% @anotherEntries.each do |entry| %> 5 <p><%= link_to entry.user.name, user_path(entry.user), class: "text-decoration-none" %></p> 6 <% end %> 7 <p><%= link_to room.room_name, plan_path(room.plan_id), class: "text-decoration-none" %></p><br /> 8 <p><%= link_to 'メッセージ', room, class: "btn btn-primary btn-lg" %></p><br /> 9 </div><br /> 10 11 <% end %> 12 <div class="d-flex justify-content-left mb-2"> 13 <%== pagy_bootstrap_nav(@pagy) %> 14 </div> 15</div>
rooms_controller/indexアクション
1def index 2 @pagy,@rooms = pagy(Room.all.select(:id,:room_name,:plan_id), items:10) 3 @currentEntries = current_user.entries 4 myRoomIds = [] 5 6 @currentEntries.each do |entry| 7 myRoomIds << entry.room.id 8 end 9 10 @anotherEntries = Entry.where('user_id != ?',current_user.id) 11 end
試したこと
@anotherEntriesや@roomsのeach文の記述箇所を変えて、1つずつできるか試したのですが、どうして2つのDM2回表示してしまいます。
!追記
1つずつ調べてみたところ、@anotherEntriesが複数表示させる根源でした。
each文の箇所を少し変更を施しところ現在存在する2つのDMが表示されたものの相変わらず名前は1つにつき2回表示されている。
またrooms_controllerのindex箇所である@anotherEntriesのwhere箇所について
現在、調べています。
回答1件
あなたの回答
tips
プレビュー