前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/28 12:17