Rails: response_with не работает должным образом во время действия создания
Вот мой метод создания в моем контроллере (по-старому):
def create
@athlete = Athlete.find(params[:video][:athlete_id])
@video = Video.new(params[:video])
if @athlete.can_add_another_video? && @video.save
flash[:notice] = "Successfully created"
PandaWorker.perform_async(@video.id)
log_activity(@video.logging_information)
else
flash[:notice] = @video.errors.full_messages.to_sentence
end
respond_with @video, location: athlete_profile_showcase_path
end
Новый способ:
def create
@athlete = Athlete.find(params[:video][:athlete_id])
@video = Video.new(params[:video])
if @athlete.can_add_another_video? && @video.save
flash[:notice] = "Successfully created"
PandaWorker.perform_async(@video.id)
log_activity(@video.logging_information)
respond_with @video, location: athlete_profile_showcase_path
else
flash[:notice] = @video.errors.full_messages.to_sentence
redirect_to athlete_profile_showcase_path
end
end
Первый фрагмент кода выше не выполняется, если сохранение видео объекта не происходит. Он пытается перенаправить на VideosController#new
метод вместо того, чтобы следовать указанному мною местоположению. Очевидно, первый путь неправильный, но я не уверен, почему. Любая помощь будет принята с благодарностью! Все еще пытаюсь полностью понять respond_with
синтаксис
1 ответ
Указанное "местоположение" используется только тогда, когда ваша модель действительна. Посмотрите на документы респондента. Пользовательские параметры - это то, что вам нужно. Также проверьте ответ здесь - определение пользовательского респондента может быть намного чище.