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

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

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

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

Q&A

解決済

1回答

182閲覧

メッセージフォームに文字を記入して送信ボタンを押してもビューに反映されない。

skem

総合スコア1

Ruby on Rails

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

0グッド

0クリップ

投稿2020/09/23 08:08

表題の仕様にしたいのですが、上手く反映されない状態です。

下記、コントローラーです。

class MessagesController < ApplicationController def index @message = Message.new @messages = current_user.messages end def create @message = current_user.messages.new(message_params) if @message.save redirect_to user_messages_path(current_user), notice: 'メッセージが送信されました' else @messages = current_user.messages flash.now[:alert] = 'メッセージを入力してください。' render :index end end private def message_params params.require(:message).permit(:content, :image).merge(user_id: current_user.id) end end

下記がビューファイルです。この下の方に書いてある「form」で記入して「Send」ボタンを押すと、送ったメッセージがビューに自動反映される様にしたいと考えております。

.messages .message .upper-message .takername = current_user.name .upper-message__date = @message.created_at .lower-message - if @message.content.present? %p.lower-message__content = @message.content .message .takerface %img{alt: "userface", src: "https://imgc.eximg.jp/i=https%253A%252F%252Fs.eximg.jp%252Fexnews%252Ffeed%252FRen_ai%252FRen_ai_188420_6aed_1.jpg,zoom=600,quality=70,type=jpg"}/ .contents .takername ミシェル・アンジェリーナ さんへ .letter いつもサポートしてくれてありがとうございます!おかげさまで仕事がはかどります! .credo #仕事好き #親身心 #人生を変える .like いいね! .form = form_for [current_user, @message] do |f| = f.text_field :content, class: 'form__message', placeholder: 'type a message' .form__mask = f.label :image, class: 'form__mask__image' do = icon('fas', 'image', class: 'icon') = f.file_field :image, class: 'hidden' = f.submit 'Send', class: 'form__submit'

仮説として、インスタンス変数である「@message」がコントローラーからビューに引き渡せていない事が原因ではないかと考えているのですが、どの様に書き換えれば良いかがわからない状態です。

ご助言いただければ幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

ビューファイルで配列を作っていないことが問題でした。
最初に「m」を順に取り出せるように配列を入れました。
そして、「@message」になっていた部分を「m」に変更しました。

.messages - @messages.each do |m| .message .takerface %img{alt: "userface", src: "https://imgc.eximg.jp/i=https%253A%252F%252Fs.eximg.jp%252Fexnews%252Ffeed%252FRen_ai%252FRen_ai_188420_6aed_1.jpg,zoom=600,quality=70,type=jpg"}/ .contents .takername = m.user.name + " さんへ" .letter - if m.content.present? %p.lower-message__content = m.content

投稿2020/09/25 09:23

skem

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問