はじめに
前回同様ペット健康管理アプリの続き。
日記ページに写真とコメントを投稿したいがページに表示してくれない。
JPGファイルの写真を張りつけ各項目を入力しSENDを押すと以下エラーが出る。
NoMethodError in Diaries#index
app/views/diaries/index.html.erb where line #7 raised:
undefined method pet' for #<Diary id: 1, comment_text: "主人の帰りを待つ", pet_id: 1, room_id: nil, image: nil, created_at: "2024-11-11 13:20:54.224497000 +0000", updated_at: "2024-11-11 13:20:54.246260000 +0000", text: nil>
Extracted source (around line #7):
5 <%= image_tag diary.image if diary.image.attached? %>
6 <p><%= diary.comment_text %></p>
7 <span class="name"><%= diary.pet.pets_name if diary.pet.present? %></span>
8 </div>
9 <% end %>
10 <% else %>
このエラーは、Diary モデルに pet という関連が定義されていないために発生。Diary モデルに Pet モデルとの関連付けが必要。
Diary モデルに belongs_to :pet を追加する
app/models/diary.rb
class Diary < ApplicationRecord
belongs_to :pet #追記箇所
has_one_attached :image
validates :comment_text, presence: true
end
おわりに
アソシエーションもしっかり考えて実装します!