前提・実現したいこと
現在、シフト管理アプリを作成しております。
シフト登録機能を実装中に以下のエラーが生じました。
一人の従業員に対して、複数のシフトを作れるようにしたいのですが、シフトを一つ作るごとに従業員IDも一つずつ新しく探し始めてしまいます。
発生している問題・エラーメッセージ
従業員ID:1でログインしてシフトを3つ目作成した時のエラー
ActiveRecord::RecordNotFound in Public::ShiftsController#show Couldn't find Employee with 'id'=3
該当のソースコード
employeeモデル
Ruby
1class Employee < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 7 has_many :shifts, dependent: :destroy 8end
shiftモデル
Ruby
1class Shift < ApplicationRecord 2 belongs_to :employee 3end
コントローラー
Ruby
1class Public::ShiftsController < ApplicationController 2 before_action :authenticate_employee! 3 4 def show 5 @employee = Employee.find(params[:id]) 6 @shifts = Shift.where(employee_id: @employee.id) 7 @shift = Shift.new 8 end 9 10 def create 11 @shift = current_employee.shifts.new(shift_params) 12 @shift.save! 13 @shifts = Shift.where(employee_id: current_employee.id) 14 redirect_to @shift 15 end 16 17private 18 19 def shift_params 20 params.require(:shift).permit(:start_time, :finish_time, :remarks, :employee_id) 21 end 22end
試したこと
・アソシエーションの確認
・showアクションの確認
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。