railsで、日記投稿のようなアプリを作成しました。
本番環境(heroku)にデプロイした段階でエラーが起きました。
※ローカル環境では、正常作動していました。
下記画像です。
エラー内容としては、
heroku logs --tail --appコマンドでログを確認しました。
上記省略 2021-05-10T02:28:40.606452+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] ActionView::Template::Error (undefined method `date' for #<Prototype:0x00005583a644c5f8> 2021-05-10T02:28:40.606453+00:00 app[web.1]: Did you mean? update): 2021-05-10T02:28:40.606454+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 1: <div class="card"> 2021-05-10T02:28:40.606455+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 2: <%# <%= link_to image_tag(prototype.image,class: :card__img),"/prototypes/#{prototype.id}" %> 2021-05-10T02:28:40.606455+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 3: <div class="card__body"> 2021-05-10T02:28:40.606456+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 4: <%= link_to "#{prototype.date}", prototype_path(prototype.id), class: :card__title%> 2021-05-10T02:28:40.606457+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 5: <p class="card__summary"> 2021-05-10T02:28:40.606457+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 6: <%= "#{prototype.thema}" %> 2021-05-10T02:28:40.606458+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 7: </p> 2021-05-10T02:28:40.606459+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] 2021-05-10T02:28:40.606459+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] app/views/prototypes/_prototype.html.erb:4 2021-05-10T02:28:40.606460+00:00 app[web.1]: [84dd2afa-7c44-483f-a919-761faddf6150] app/views/prototypes/index.html.erb:10
ここで『undefined method `date'』と言われているので、「prototype」で「date」が定義されていないということがわかりました。
そこで、「prototype」ディレクトリの中身のhtml、マイグレーションファイル、モデルのバリデーション等を確認しても原因がわかりませんでした。
解決方法をリサーチしても、マイグレーションファイルの書き忘れ・データベースにカラムがないという原因の記事はありましたが、自分と同じような物は探せませんでしたので、ここでお聞きしました。
下記が私のコードになります。
__prototypes/show.html.erb
__
<main class="main"> <div class="inner"> <div class="prototype__wrapper"> <p class="prototype__hedding"> <%= @prototype.date %> </p> <%= link_to "by #{@prototype.user.name}","/users/#{@prototype.user.id}", class: :prototype__user %> <% if user_signed_in? && current_user.id == @prototype.user_id %> <div class="prototype__manage"> <%= link_to "編集する", edit_prototype_path(@prototype), class: :prototype__btn %> <%= link_to "削除する", prototype_path(@prototype), method: :delete, class: :prototype__btn %> </div> <% end %> <%# <div class="prototype__image" style="text-align:center;"> <%= image_tag(@prototype.image)%> <%# </div> %> <div class="prototype__body"> <div class="prototype__detail"> <p class="detail__title">今月のテーマ</p> <p class="detail__message"> <%= @prototype.thema %> </p> </div> <div class="koumoku"> <%= "【本日の行動計画】" %><br /> </div> <div class="prototype__detail"> <p class="detail__title">本日の重点課題と徹底する取り組み</p> <p class="detail__message"> <%= @prototype.text1 %> </p> </div> <div class="prototype__detail"> <p class="detail__title">チーム全体の理念浸透➡成長・成果に繋げる取り組み</p> <p class="detail__message"> <%= @prototype.text2 %> </p> </div> <div class="prototype__detail"> <p class="detail__title">メンバー一人一人の成長に向けた取り組み</p> <p class="detail__message"> <%= @prototype.text3 %> </p> </div> <div class="koumoku"> <%= "【成果報告】" %><br /> </div> <div class="prototype__detail"> <p class="detail__title">本日チームが成長した点 チームの状況</p> <p class="detail__message"> <%= @prototype.text4 %> </p> </div> <div class="prototype__detail"> <p class="detail__title">リーダーとしての取り組み振り返り(成果・成長に貢献できたか?)</p> <p class="detail__message"> <%= @prototype.text5 %> </p> </div> </div> <div class="prototype__comments"> <% if user_signed_in? %> <%= form_with(model: [@prototype, @comment], local: true) do |f|%> <div class="field"> <%= f.label :text, "コメント" %><br /> <%= f.text_field :text %> </div> <div class="actions"> <%= f.submit "送信する", class: :form__btn %> </div> <% end %> <% end %> <ul class="comments_lists"> <% if @comments %> <% @comments.each do |comment| %> <li class="comments_list"> <%= comment.text %> <%= link_to "(#{comment.user.name})", "/users/#{comment.user.id}", class: :comment_user %> <% end %> <% end %> </li> </ul> </div> </div> </div> </main>
__prototypes/_prototype.html.erb
__
<div class="card"> <%# <%= link_to image_tag(prototype.image,class: :card__img),"/prototypes/#{prototype.id}" %> <div class="card__body"> <%= link_to "#{prototype.date}", prototype_path(prototype.id), class: :card__title%> <p class="card__summary"> <%= "#{prototype.thema}" %> </p> <%= link_to "by #{prototype.user.name}", "/users/#{prototype.user.id}}", class: :card__user %> </div> </div>
__prototypes/_form.html.erb
__
<%= form_with model:prototype, class: 'form', local: true do |f| %> <%# <%= form_with url: prototypes_path, class: 'form', local: true do |f| %> <div class="field"> <%= f.label :title, "投稿日" %><br /> <%= f.date_field :date %> </div> <div class="field"> <%= f.label :catch_copy, "今月のテーマ" %><br /> <%= f.text_area :thema, class: :form__text_1 %> </div> <div class="koumoku"> <%= "【本日の行動計画】" %><br /> </div> <div class="field"> <%= f.label :concept, "本日の重点課題と徹底する取り組み" %><br /> <%= f.text_area :text1, class: :form__text %> </div> <div class="field"> <%= f.label :concept, "チーム全体の理念浸透➡成長・成果に繋げる取り組み" %><br /> <%= f.text_area :text2, class: :form__text %> </div> <div class="field"> <%= f.label :concept, "メンバー一人一人の成長に向けた取り組み" %><br /> <%= f.text_area :text3, class: :form__text %> </div> <div class="koumoku"> <%= "【成果報告】" %><br /> </div> <div class="field"> <%= f.label :concept, "本日チームが成長した点 チームの状況" %><br /> <%= f.text_area :text4, class: :form__text %> </div> <div class="field"> <%= f.label :concept, "リーダーとしての取り組み振り返り(成果・成長に貢献できたか?)" %><br /> <%= f.text_area :text5, class: :form__text %> </div> <%# <div class="field"> <%= f.label :image, "自分の画像" %> <%# <br /> %> <%# <%= f.file_field :image %> <%# </div> %> <div class="actions"> <%= f.submit "保存する", class: :form__btn %> </div> <% end %>
__models/prototype.rb
__
class Prototype < ApplicationRecord belongs_to :user has_many :comments, dependent: :destroy has_one_attached :image validates :date, presence: true validates :thema, presence: true validates :text1, presence: true validates :text2, presence: true validates :text3, presence: true validates :text4, presence: true validates :text5, presence: true end
マイグレーションファイル
class CreatePrototypes < ActiveRecord::Migration[6.0] def change create_table :prototypes do |t| t.date :date, null: false t.text :thema, null: false t.text :text1, null: false t.text :text2, null: false t.text :text3, null: false t.text :text4, null: false t.text :text5, null: false t.references :user t.timestamps end end end
Qiitaの方でも質問させていただいたのですが、不具合で質問が消えてしまいましたので、こちらでお聞きすることにしました。
手詰まりですので、ヒントだけでも教えていただければ助かります。よろしくお願いします。