Ошибка ActionController :: UnknownFormat с запросом Ajax в Rails 6.0.1 - PullRequest
0 голосов
/ 18 июня 2020

Я нашел много похожих вопросов, но ни один пока не смог исправить мою ошибку.

В моем recipes.show. html .haml файл у меня

= simple_form_for @recipe, url: upload_photo_recipe_url, remote: true do |f|
  = f.file_field :photo, id: 'photo-uploader', class: 'd-none'
  = f.submit id: 'submit-photo', class: 'd-none'

Это отправлено в моем шоу. js файл с

$('#photo-uploader').change(function() {
  $(`#edit_recipe_${recipeId}`).submit()
})

Я хочу, чтобы эта фотография отображалась после завершения загрузки без обновления страницы, поэтому в recipes_controller.rb есть

def upload_photo
  @recipe = Recipe.find(params[:id])
  if @recipe.update(recipe_params)
    respond_to do |format|
      format.js
    end
  else

  end
end

Предполагается, что затем будет запущен файл upload_photo. js .erb (в настоящее время содержит только console.log), но он никогда не попадает в него.

Как только фотография завершает загрузку, я получаю страницу с ошибкой: «ActionController :: UnknownFormat in RecipesController # upload_photo» с выделением «response_to do | format |» строка.

Что происходит из-за того, что я не могу отобразить доступ к файлу upload_photo. js .erb?

Щелкнув по ошибке, я получаю сообщение Нет совпадений маршрута [GET] "/ recipes / 11 / upload_photo "error.

Любая помощь будет очень признательна! Пытаюсь исправить это уже пару дней.

Спасибо за внимание!

1 Ответ

0 голосов
/ 19 июня 2020

Проблема была в средней строке моего шоу. js function:

$('#photo-uploader').change(function() {
  $(`#edit_recipe_${recipeId}`).submit()
})

Обновляя мое шоу. js вместо этого «щелкните» форму, как в

$('#photo-uploader').change(function() {
  $('#submit-photo').click()
})

Я получил доступ к моему файлу upload_photo. js .erb после загрузки фотографии.

...