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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

730閲覧

Messageが表示されないです

kawakun-----

総合スコア13

Ruby on Rails 6

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/03/23 04:17

現在メッセージのコントローラーを作成し、
ビューで表示しようとしています。

シークエルプロにデータは保存されるので、
ビューのインスタンス変数などの問題かと思いますが。
現状、エラー原因の場所の特定ができていません。

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

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に関しては
変数を代入しているので@を用いての
記述に変更しましたが状況は変わリませんでした。

大変お手数おかけしますが、
ご教授お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

載っているlogによれば UsersController の show が実行されています。
ですから Messageが表示されないのでしょう。
Messageを表示する URL をアクセスしてください。

投稿2021/03/23 08:18

winterboum

総合スコア23567

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

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

kawakun-----

2021/03/25 17:01

ご回答ありがとうございます!! 原因はコントローラーで定義し忘れていたことです。 @messages = @room.messages.includes(:user)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問