ich eine Reihe von verschachtelten Routen haben, die wie folgt aussehen:konnte nicht Workout ohne ID-Fehler mit Nested Routen finden
resources :workouts do
resources :exercises do
resources :reports, shallow: true
end
end
ich versuchte, sie so flach wie möglich zu machen, aber nicht nisten sie einfach erzeugt zu viele Fehler.
Im Moment funktionieren sie gut, außer wenn ich versuche, auf die exercises#index
Seite für ein bestimmtes Training zuzugreifen. Ich Verknüpfung der Seite wie folgt aus:
<%= link_to 'Add/Edit Exercises', workout_exercises_path(@workout, exercise), method: :index %>
Und wenn ich auf diesen Link klicken, erhalte ich:
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
:
ActiveRecord::RecordNotFound at /workouts/3/exercises
Couldn't find Workout without an ID
Der Fehler auf meinem exercises_controller
in der angegebenen Leitung aufgerufen
Die friendly.find
ist, weil ich den friendly_id Edelstein verwende, der Schnecken anstelle von Ids in der URL erzeugt. Ich benutze es auf die gleiche Weise in anderen Arbeitsmodellen, daher glaube ich nicht, dass dies das aktuelle Problem verursacht.
Kann jemand sehen, warum ich diesen Fehler bekomme? Ich habe @workout
in die Live-Shell meines Fehlers eingegeben und es heißt, dass @workout
nil
ist, was bedeutet, dass es den Wert irgendwie nicht bekommt. Ich weiß, dass dies wichtige Informationen sind, aber ich weiß nicht, wie ich es beheben kann.
Dies Ich denke, durch die ursprüngliche Fehlermeldung anzeigt, aber jetzt hat es ein Problem mit meinem params: 'param fehlt oder der Wert leer ist: exercise' – Liz
Und ich habe den Korrelat Abschnitt meines' zerstören ändern 'Methode auch? – Liz
Fügen Sie einen Debug Breakpoint in diese Methode 'exercise_params' hinzu und sehen Sie, welcher Parameter fehlt! –