我看过很多类似的帖子,但似乎无法摆脱这个record not found
错误,当我尝试使用我的destroy
方法时得到的错误。有问题的两个型号是workouts.rb
和exercises.rb
。锻炼has_many
练习。未找到轨道记录错误未找到身份证找不到锻炼
我得到的错误是Couldn't find Workout without an ID
从我exercises_controller
第三线以下代码:
def destroy
@workout = Workout.friendly.find(params[:workout_id])
exercise = @workout.exercises.find(params[:id])
我exercise.rb
模式是:
class Exercise < ActiveRecord::Base
belongs_to :workout
belongs_to :user
has_many :reports
validates :user, presence: true
end
我workout.rb
模式是:
class Workout < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :user
has_many :exercises
has_many :reports
validates :user, presence: true
end
而我的全部exercises_controller
是:
class ExercisesController < ApplicationController
before_action :authenticate_user!
def index
@exercises = Exercise.all
end
def new
@exercise = Exercise.new
end
def create
@workout = Workout.friendly.find(params[:workout_id])
exercise = @workout.exercises.new(exercise_params)
exercise.user = current_user
if exercise.save
flash[:notice] = "Results saved successfully."
redirect_to [@workout]
else
flash[:alert] = "Results failed to save."
redirect_to [@workout]
end
end
def destroy
@workout = Workout.friendly.find(params[:workout_id])
exercise = @workout.exercises.find(params[:id])
if exercise.destroy
flash[:notice] = "Exercise was deleted successfully."
redirect_to [@workout]
else
flash[:alert] = "Exercise couldn't be deleted. Try again."
redirect_to [@workout]
end
end
private
def exercise_params
params.require(:exercise).permit(:name, :needs_seconds, :needs_weight, :needs_reps)
end
def authorize_user
exercise = Exercise.find(params[:id])
unless current_user == current_user.admin?
flash[:alert] = "You do not have permission to create or delete an exercise."
redirect_to [exercise.workout]
end
end
end
我的路线很简单:
resources :workouts
resources :exercises
编辑:
调用删除代码是:
<%= link_to "Delete #{exercise.name}", exercise_path, method: :delete, data: { confirm: 'Are you sure?' } %>
哪里这个错误是来自任何想法?
什么是'参数'来到'摧毁'行动? – Pavan
你能粘贴代码,从哪个请求都来这里 – Mukesh
@Mukesh,我加入了雇员再培训局的代码我原来的职位。 – Liz