Ajax请求不正确的URL(Rails项目)

时间:2018-01-03 03:57:11

标签: javascript ruby-on-rails ajax

我试图通过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完全不同。

Screenshot

注意:它不适用于POST或DELETE方法,但它适用于GET。我知道我可以使用GET方法,但这不是正确的方法。

---------- UPDATE -------------

我已经尝试过Rails规范方式:

routes.rb中:

resources :company_services

这就是结果,如果没有app/company_services/:id

,它会覆盖app/company_services的原始网址:id

enter image description here

这些是我的路线(与:company_services相关)

enter image description here

3 个答案:

答案 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. 希望可以提供帮助。