###前提・実現したい事
ruby on railsでコメント機能を実装して、コメント投稿ページを作成したいのですがエラーが出ます。
###発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound (Couldn't find Photo without an ID): app/controllers/answers_controller.rb:5:in `new'
###該当のソースコード
answers_controller.rb
rails
1class AnswersController < ApplicationController 2 3 def new 4 @answer =Answer.new 5 @photo = Photo.find(params[:photo_id]) 6 end 7 8 9 def create 10 @answer = current_user.answers.new(answer_params) 11 if @answer.save 12 redirect_back(fallback_location: root_path) 13 else 14 redirect_back(fallback_location: root_path) 15 end 16 end 17 18 private 19 20 def answer_params 21 params.require(:answer).permit(:content, :photo_id) 22 end 23end 24
answers/new.html.erb
rails
1<%= image_tag @photo.image.url if @photo.image? %> 2
photo.rb
rails
1class Photo < ApplicationRecord 2 mount_uploader :image, ImageUploader 3 4 validates :user_id, presence: true 5 validates :content, presence: true 6 validates :image, presence: true 7 8 belongs_to :user 9 has_many :answers, dependent: :destroy 10 11end 12
answer.rb
rails
1class Answer < ApplicationRecord 2 belongs_to :user 3 belongs_to :photo 4end 5
routes.rb
rails
1Rails.application.routes.draw do 2 resources :photos 3 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 4 root to: 'toppages#index' 5 6 get 'login', to: 'sessions#new' 7 post 'login', to: 'sessions#create' 8 delete 'logout', to: 'sessions#destroy' 9 10 get 'signup', to: 'users#new' 11 resources :photos do 12 resources :answers, only: [:create, :new] 13 end 14 resources :users, only: [:index, :show, :create] 15 resources :photos 16 resources :answers, only: [:create, :new] 17end 18
###試した事
ルーティングのネストの影響だと思い、answersコントローラーの
@photo = Photo.find(params[:id])
を@photo = Photo.find(params[:photo_id])
と変えてみたんですがそれでも改善されませんでした。
###補足
足りないコードがあれば載せます。ご教授お願いします。
ruby 2.5.3
rails 5.2.5
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。