我试图通过Ajax请求URL来删除数据库中的条目,我的JavaScript代码如下:
function disableService(id) {
$.ajax({
type: 'DELETE',
url: '/app/delete_service/',
data: { id: id },
success: function() {
// SOME CODE HERE //
}
});
}
在我的routes
文件中,我有以下路由来处理请求:
delete 'delete_service', to: 'company_services#destroy'
但是当我尝试发出请求时,即使我在检查器的控制台中复制/粘贴代码本身,Ajax也会覆盖URL并请求另一个URL。
正如您在屏幕截图中看到的,代码中的URL与请求的URL完全不同。
注意:它不适用于POST或DELETE方法,但它适用于GET。我知道我可以使用GET方法,但这不是正确的方法。
---------- UPDATE -------------
我已经尝试过Rails规范方式:
routes.rb中:
resources :company_services
这就是结果,如果没有app/company_services/:id
app/company_services
的原始网址:id
这些是我的路线(与:company_services
相关)
答案 0 :(得分:0)
您尝试以下内容
#=> routes.rb
resources :company_services
#=> DELETE /company_services/:id(.:format) # this is your link format
现在编辑您的AJAX
代码
function disableService(id) {
var id = 45;
$.ajax({
type: 'DELETE',
url: '/app/company_services/' + id,
success: function(response) {
// SOME CODE HERE //
}
});
}
希望能提供帮助
答案 1 :(得分:0)
回答我自己的问题希望对有同样问题的其他人有用:
问题是负责处理请求的控制器的操作重定向到app_company_services_path
。我在保存更改后尝试重定向到company_services
,但我不熟悉重定向后javascript请求的行为方式。
我的错误:
def destroy
# some code here
redirect_to app_company_services_path
end
正确的方式:
def destroy
# some code here
render json: { success: 'something here' }, status: 200
end
然后使用JS重定向,而不是尝试直接从Rails重定向。
答案 2 :(得分:0)
请试试这个
id = '45'
url: '/app/company_services/' + id
Or please try direct URL: 'app/company_services/45' just to test once.
希望可以提供帮助。