首页 > 解决方案 > 如何修复:通过 Ajax 加载弹出窗口时出现 404 错误?

问题描述

我对 RoR 很陌生,所以我应该错过一些我在单击按钮时尝试通过 Ajax 加载弹出窗口时遇到的问题每次我尝试访问它时,我都会收到 Ajax 方法的错误,您可以在下面看到

我的 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

标签: htmlruby-on-railsrubyselecthaml

解决方案


该错误准确地告诉您出了什么问题:

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

BTW 和 FWIW:Rails 错误并不总是完全有帮助的。但是,它们通常很有帮助。在这种情况下,您遇到了RoutingError (No route matches)错误。这几乎肯定指向您的routes.rb. 这与您的 javascript 或按钮代码无关。在这种情况下,显示您的 javascript 和按钮代码是不相关的。


推荐阅读