【问题标题】:How to fix : 404 error while loading a pop via Ajax?如何修复:通过 Ajax 加载弹出窗口时出现 404 错误?
【发布时间】:2019-11-07 06:01:23
【问题描述】:

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

  • 我相信我的合成器是正确的
  • 我显然创建了一个“pbbackground”文件
  • 我在点击操作的按钮中也提到了该行
  • 我尝试加载一个包含已有弹出窗口内容的弹出窗口,但它不起作用
  • 弹出窗口正在加载但未显示,我收到 ajax 错误消息 => 我猜我的“成功”部分是问题,但我不知道原因
  • 我使用了“调试器”;发现它是否尝试进入 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

【问题讨论】:

  • url = "/progress_boards/new" 工作???
  • 是的,它工作正常
  • 你的服务器控制台有错误吗?
  • 是的,这里是@jvillian:在 2019-06-25 16:54:21 +0100 ActionController::RoutingError (No route) 开始 GET "/progress_boards/7/pbbackground" for 127.0.0.1匹配 [GET] "/progress_boards/7/pbbackground"):
  • 所以,您遇到了路由错误。请将您的routes.rb 添加到您的问题中。

标签: html ruby-on-rails ruby select haml


【解决方案1】:

错误告诉你到底哪里出了问题:

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

假设您对您的ProgressBoardsController 有一个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
    get :pbbackground
  end
end

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

【讨论】:

  • 当然可以。随时为未来的搜索者投票和/或接受。
  • 这就是我所做的,但作为一个新成员,我的投票被考虑但不显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
相关资源
最近更新 更多