Как исправить: ошибка 404 при загрузке поп через Ajax? - PullRequest
0 голосов
/ 25 июня 2019

Я довольно новичок в RoR, поэтому я должен пропустить что-то, что застрял при попытке загрузить всплывающее окно через Ajax при нажатии кнопки. Каждый раз, когда я пытаюсь добраться до него, я получаю ошибку метода Ajax, которую вы можете увидеть ниже

  • Я считаю, что мой синтакс правильный
  • Я, очевидно, создал файл 'pbbackground'
  • Я также ссылался на эту строку в моей кнопке при нажатии кнопки
  • Я попытался загрузить всплывающее окно с содержимым уже работающего всплывающего окна, но оно не работает
  • Всплывающее окно загружается, но не отображается, и я получаю сообщение об ошибке ajax => Iдумаю, моя «удачная» часть - это проблема, но я не могу понять, почему
  • я использовал «отладчик»;определить, пытается ли он войти в «успешную» часть JS, но, похоже, это не так
  • При проверке консоли браузера я обнаружил, что ошибка 404

Мой метод JS:

  function loadProgressForm(resource, id){
    $(".form_loader").show();
    if(resource == "new"){
      url = "/progress_boards/new";
      popup_name = "Make A Progress Board";
    } else if (resource == "edit"){
      url = "/progress_boards/" + id + "/edit";
      popup_name = "Add/Remove Metrics";
    } else if (resource == "pbbackground"){
      url = "/progress_boards/" + id + "/pbbackground";
      popup_name = "Add A Picture";
    }
    $.ajax({
      url: url,
      success: function(response, data){
        $("#progress_board_form").html(response.html);
        $("#progress_board_form").find('.modal-title').text(popup_name);
        $(".form_loader").hide();
      },
      error: function(response, data){
        alert("Error loading project form")
        $(".form_loader").hide();
      }
    })
  }

Код кнопки:

    %li= link_to 'Add Background', 'javascript:void(0)', onclick:"$('#create_edit_progress_board_model').appendTo('body').modal('show'); loadProgressForm('pbbackground', #{@progress_board.id});"

Также вот часть, соответствующая моей папке в моем файле route.rb:

resources :progress_boards do
    collection do
      get :get_progress_data
      get :get_panel_data
      get :render_tab
    end
    member do
      get :open_or_archive
    end
  end

1 Ответ

0 голосов
/ 25 июня 2019

Ошибка говорит вам точно, что не так:

ActionController::RoutingError (No route matches [GET] "/progress_boards/7/pbbackground")

И, как вы можете видеть, у вас нет маршрута pbbackground:

resources :progress_boards do
  collection do
    get :get_progress_data
    get :get_panel_data
    get :render_tab
  end
  member do
    get :open_or_archive
  end
end

Предполагается, чтоу вас есть pbbackground действие на вашем ProgressBoardsController, затем выполните:

resources :progress_boards do
  collection do
    get :get_progress_data
    get :get_panel_data
    get :render_tab
  end
  member do
    get :open_or_archive
    get :pbbackground
  end
end

Кстати и FWIW: ошибки Rails не всегда идеально полезны.Но они часто очень полезны.В этом случае вы получили ошибку RoutingError (No route matches).Что почти наверняка указывает на ваш routes.rb.Это не имеет никакого отношения к вашему JavaScript или коду кнопки.В этом случае показ вашего javascript и кода кнопки не имеет значения.

...