現在メッセージのコントローラーを作成し、
ビューで表示しようとしています。
シークエルプロにデータは保存されるので、
ビューのインスタンス変数などの問題かと思いますが。
現状、エラー原因の場所の特定ができていません。
発生している問題・エラーメッセージ
Processing by UsersController#show as HTML Parameters: {"id"=>"6"} User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 6 ORDER BY `users`.`id` ASC LIMIT 1 User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 6 LIMIT 1 ↳ app/controllers/users_controller.rb:14:in `show' Rendering users/show.html.erb within layouts/application ActiveStorage::Attachment Load (0.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 6 AND `active_storage_attachments`.`record_type` = 'User' AND `active_storage_attachments`.`name` = 'image' LIMIT 1 ↳ app/views/users/show.html.erb:45 ActiveStorage::Blob Load (0.2ms) SELECT `active_storage_blobs`.* FROM `active_storage_blobs` WHERE `active_storage_blobs`.`id` = 10 LIMIT 1 ↳ app/views/users/show.html.erb:46 Rendered relationships/_follow_button.html.erb (Duration: 0.5ms | Allocations: 267) Rendered users/show.html.erb within layouts/application (Duration: 25.7ms | Allocations: 17253) [Webpacker] Everything's up-to-date. Nothing to do Completed 200 OK in 42ms (Views: 28.7ms | ActiveRecord: 11.1ms | Allocations: 33509)
該当のソースコード
Messageコントローラー
class MessagesController < ApplicationController def index @message = Message.new @room = Room.find(params[:room_id]) end def create @room = Room.find(params[:room_id]) @message = @room.messages.new(message_params) if @message.save redirect_to room_messages_path(@room) else @messages = @room.messages.includes(:user) render :index end end private def message_params params.require(:message).permit(:content, :image).merge(user_id: current_user.id) end end
Messageビュー
<div class="wrapper"> <div class="side_bar"> <%= render "side_bar" %> </div> <div class="chat"> <%= render "main_chat" %> </div> </div>
_main
<div class="chat-header"> <div class="left-header"> <div class="header-title"> <%= @room.name %> </div> </div> <div class="right-header"> <div class="header-button"> <%= link_to "Messageを終了する", root_path %> </div> </div> </div> <div class="messages"> <%= render partial: 'message', collection: @messages %> </div> <%= form_with model: [@room, @message], class: 'form', local: true do |f| %> <div class="form-input"> <%= f.text_field :content, class: 'form-message', placeholder: 'type a message' %> <label class="form-image"> <span class="image-file">画像</span> <%= f.file_field :image, class: 'hidden' %> </label> </div> <%= f.submit '送信', class: 'form-submit' %> <% end %>
_message
<div class="message"> <div class="upper-message"> <div class="message-user"> <!-- 投稿したユーザー名情報を出力する --> <%= message.user.name %> </div> <div class="message-date"> <!-- 投稿した時刻を出力する --> <%= l message.created_at %> </div> </div> <div class="lower-message"> <div class="message-content"> <!-- 投稿したメッセージ内容を記述する --> <%= message.content %> </div> <%= image_tag message.image.variant(resize: '500x500'), class: 'message-image' if message.image.attached? %> </div> </div>
_side
<div class="side-bar-header"> <div class="header-name"> <%=link_to current_user.name, user_path(current_user) %> </div> <div class="create-room"> <%= link_to "Roomを作成する" , new_room_path %> </div> </div> <div class="rooms"> <% current_user.rooms.each do |room| %> <div class="room"> <div class="room-name"> <%= link_to room.name, room_messages_path(room)%> </div> </div> <% end %> </div>
試したこと
message
roomに関しては
変数を代入しているので@を用いての
記述に変更しましたが状況は変わリませんでした。
大変お手数おかけしますが、
ご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 17:01