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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Action Cable

Action Cableは、WebSocketをRailsに組み込む機能。Rails4でオプションとして存在していたWebSocketをRails5で標準機能したものです。Railsアプリケーションと同様のスタイルで、Rubyを用いたリアルタイム機能を記述できます。

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

3965閲覧

Rails: renderで呼び出し先のNoMethodError

rutko

総合スコア15

Action Cable

Action Cableは、WebSocketをRailsに組み込む機能。Rails4でオプションとして存在していたWebSocketをRails5で標準機能したものです。Railsアプリケーションと同様のスタイルで、Rubyを用いたリアルタイム機能を記述できます。

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/01/27 07:31

編集2019/01/27 12:15

前提・実現したいこと

Ruby on RailsのActionCableを使用してチャットアプリの作成をしております。
show.html.erbの中にrenderで@messagesという引数を設定し、_message.html.erbにレンダリングさせ、ブラウザを更新の際にNoMethodErrorが表示されてしまいrenderで読み込まれる_message.html.erbのnameメゾットがないとエラーでは出ているのですが、定義する場所を間違えている可能性もあり解決策が分かりません。
質問に不備があるかもしれませんが、ご教授お願いします。

▼アプリ作成に参考にしたサイト
https://qiita.com/sunaga70/items/1f0add0dbcd0564cafee
https://qiita.com/Hijiri-K/items/c3774c72a2cb68e1a720

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

▼rails s で localhost:3000にアクセスした際にターミナルに下記のエラーが表示されます。

ActionView::Template::Error (undefined method `name' for #<Message:0x00007fd055283ea8>): 1: <div class="messages"> 2: <p> 3: <%= "#{message.name} : #{message.content}(#{message.created_at.strftime('%Y/%m/%d %H:%M:%S')})" %> 4: </p> 5: </div> app/views/messages/_message.html.erb:3:in `_app_views_messages__message_html_erb___2950380043806694761_70266379310280' app/views/rooms/show.html.erb:3:in `_app_views_rooms_show_html_erb__2936794920191071488_70266395210460'

▼localhost:3000のブラウザ上には下記のエラーが表示されます。

NoMethodError in Rooms#show Showing /Users/nika/git/mogura/app/views/messages/_message.html.erb where line #3 raised: undefined method `name' for #<Message:0x00007fd055283ea8> Extracted source (around line #3): 1 2 3 4 5 <div class="messages"> <p> <%= "#{message.name} : #{message.content}(#{message.created_at.strftime('%Y/%m/%d %H:%M:%S')})" %> </p> </div>

該当のソースコード

Ruby

1app/views/rooms/show.html.erb 2 3<h1>Chat</h1> 4 5<form> 6 <label>名前</label> 7 <input type="text" class="js-name" value="名無子"> 8 <br> 9 <label>内容</label> 10 <input type="text" class="js-content" data-behavior="room_speaker"> 11</form> 12 13<div id="messages"> 14 <%= render @messages %> 15</div> 16

Ruby

1app/views/messages/_message.html.erb 2 3<div class="messages"> 4 <p> 5 <%= "#{message.name} : #{message.content}(#{message.created_at.strftime('%Y/%m/%d %H:%M:%S')})" %> 6 </p> 7</div> 8

試したこと

・railsサーバの再起動
・rails bd:migrateでデータベースの保存
・_message.html.erbを
<%= "#{message.name} : #{message.content}(#{message.created_at.strftime('%Y/%m/%d %H:%M:%S')})" %>
=>
<%= "#{@message.name} : #{@message.content}(#{@message.created_at.strftime('%Y/%m/%d %H:%M:%S')})" %>
のように@をつけてみましたがエラー内容は変わらず。

補足情報(FW/ツールのバージョンなど)

Ruby ver: 2.5.1p57
Rails ver: 5.2.2

エディタ:Atom
・terminal-plus
・browser-plus

OS:macOS 10.13.6

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

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

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

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

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

guest

回答1

0

ベストアンサー

undefined method `name' for #Message:0x00007fd055283ea8

エラーメッセージの内容から、モデルにnameというメソッドが存在していないということの様に思えます。
Railsはデータベースのテーブルの構成を自動で読み込んでアクセサを生やすので、データベースのテーブルにnameというカラムが存在しないのでは無いかと思います。

参考にされたというQiitaの記事を見ましたが、
コマンドを実行する以下の部分

$ rails g model message content:text name:string

こちらを

$ rails g model message content:text

このように入力してしまっていたりしないでしょうか?

Railsコンソールを立ち上げて、

irb> Message

とモデル名だけを入力すると、モデルの情報が表示されると思うので確認してみてください。

投稿2019/01/28 04:47

kouheiszk

総合スコア213

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

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

rutko

2019/01/28 12:17

ご親切に回答いただきありがとうございます。 とてもわかり易くて勉強になりました。 仰る通り、データベースのテーブルにnameカラムの設定をしていない為に今回の問題が起きていたようです。 下記のサイトを参考にしてmodelとmigrateファイルを削除したあと、kouheiszkさんのご教授いただいた内容で改善しました。 ありがとうございました。 ▼model削除 https://bokuranotameno.com/post-9880/ ▼テーブルを作り直す https://keruuweb.com/rails-テーブルを作り直す/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問