前提・実現したいこと
チャットアプリを作っています!
メッセージ投稿機能を作成しているのですが、メッセージに値を入れて投稿する際にはうまく表示されるのですが、空の値で送信するとエラーが起きます。
@usersは、メッセージ相手の名前や、アイコンを表示するために使用しています。
発生している問題・エラーメッセージ
undefined method `each' for nil:NilClass Extracted source (around line #3): <div class='chat-wrapper'> <div class='chat-header'> <% @users.each do |user| %> <% next if user.id == current_user.id %> <div class='chat-user-avatar'> <% if user.avatar.present? %>
該当のソースコード
ruby
1(messages/index.html.erb) 2<div class='chat-wrapper'> 3 <div class='chat-header'> 4 <% @users.each do |user| %> 5 <% next if user.id == current_user.id %> 6 <div class='chat-user-avatar'> 7 <% if user.avatar.present? %> 8 <%= image_tag user.avatar, class:"chat-header-avatar" %> 9 <% else %> 10 <%= image_tag "unnamed.jpg", class:"chat-header-avatar" %> 11 <% end %> 12 </div> 13 <div class='chat-user-name'> 14 <%= user.name %> 15 </div> 16 <% end %> 17 </div>
ruby
1(messages_controller.rb) 2def index 3 @message = Message.new 4 @room = Room.find(params[:room_id]) 5 @users = @room.users 6 @messages = @room.messages.includes(:user) 7 end 8 9 def create 10 @room = Room.find(params[:room_id]) 11 @message = @room.messages.new(message_params) 12 if @message.save 13 redirect_to room_messages_path(@room) 14 else 15 @messages = @room.messages.includes(:user) 16 render :index 17 end 18 end
ruby
1(routes.rb) 2resources :rooms, only: [:new, :create] do 3 resources :messages, only: [:index, :create]
indexにrenderされた時に何か起こっているのでしょうか?
どこが問題なのか教えていただけると幸いです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。