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 ответ

Указанное "местоположение" используется только тогда, когда ваша модель действительна. Посмотрите на документы респондента. Пользовательские параметры - это то, что вам нужно. Также проверьте ответ здесь - определение пользовательского респондента может быть намного чище.

Другие вопросы по тегам