У меня есть набор вложенных маршрутов, которые выглядят следующим образом:Не удалось найти тренировки без ID ошибки с вложенными Маршруты
resources :workouts do
resources :exercises do
resources :reports, shallow: true
end
end
Я пытался сделать их неглубоко, насколько это возможно, но не гнездятся их просто генерироваться слишком много ошибок.
В настоящий момент они работают нормально, за исключением случаев, когда я пытаюсь получить доступ к странице exercises#index
для конкретной тренировки. Я связывающая страницу, как это:
<%= link_to 'Add/Edit Exercises', workout_exercises_path(@workout, exercise), method: :index %>
И когда я нажимаю на эту ссылку я получаю:
ActiveRecord::RecordNotFound at /workouts/3/exercises
Couldn't find Workout without an ID
Ошибка вызывается на моем exercises_controller
на указанной линии:
class ExercisesController < ApplicationController
before_action :authenticate_user!
def index
@workout = Workout.friendly.find(params[:id]) <<<<<THIS LINE
@exercise = Exercise.new
@exercises = Exercise.all
end
def new
@exercise = Exercise.new
end
def create
@workout = Workout.friendly.find(params[: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, :workout_id)
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
friendly.find
- это потому, что я использую драгоценный камень friendly_id, который генерирует пули вместо идентификаторов в URL-адресе. Я использую его таким же образом в других рабочих моделях, поэтому я не считаю, что это вызывает текущую проблему.
Может ли кто-нибудь понять, почему я получаю эту ошибку? Я набрал @workout
в живую оболочку моей ошибки, и она говорит, что @workout
- nil
, что означает, что она каким-то образом не получает значение. Я знаю, что это важная информация, но не знаю, как ее исправить.
Это я думаю, получил через первоначальную ошибку, но теперь у него есть проблема с моим Params: 'пары отсутствуют или значение пусто: exercise' – Liz
И мне придется изменить корреляционный раздел моего' уничтожить 'метод также? – Liz
Добавить точку отладки в этом методе 'exercise_params' и посмотреть, какой параметр отсутствует! –