html - 如何修复:通过 Ajax 加载弹出窗口时出现 404 错误?
问题描述
我对 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
解决方案
该错误准确地告诉您出了什么问题:
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 和按钮代码是不相关的。
推荐阅读
- c# - 从 PHP 执行存储过程导致“找不到存储过程”
- css - 在使用 python 抓取网站时,只需要从超过 2 个结果的类中提取一个值
- c# - 使用 MsTest 在 C# 中模拟 SqlConnection、SqlCommand 和 SqlReader
- c# - 数据库更新后更新 Listview (WPF + MVVM)
- sql - 如何使用多个语句修复单个表选择的查询
- php - 用于分页 php 的 Htaccess
- pine-script - Tradingview Pine 脚本添加 % 止损
- python - 从 .txt 文件中读取并显示它
- laravel - 我无法在 laravel 中执行 MyCommand
- java - 使用 Spring Boot JPA 配置多个数据源