如何使Rails标准资源在更新时接受POST

时间:2013-09-17 04:12:20

标签: javascript ruby-on-rails rest angularjs

我坚持使用AngularJS - Rails功能。 ngResource create update 上发送POST请求。我为 ngResource 找到了这个问题的解决方案,但我想在Rails方面解决它。我认为没有任何冲突'更新创建在不同的URI上执行

2 个答案:

答案 0 :(得分:1)

您可以更改Rails资源以接受更新操作的post方法。 但是,我不推荐这种方式,因为RESTful更新方式最好是PUT方法,而不是POST

正如你所说,你找到了一个在ngResource上发送PUT请求的灵魂。 我强烈推荐这种方式。

来自http://blog.safaribooksonline.com/2013/05/16/angularjs-ngresource-tips-and-tricks/, ngResource不支持开箱即用的PUT,但非常容易实现:

var res = $resource('/your/url/:id', {foo: 'bar'}, {'put': {method: 
  'PUT', params: {foo: 'baz'}, isArray: false}});

以下是关于它的另一个讨论,我们最好不再使用POST进行更新。

PUT vs POST in REST

答案 1 :(得分:0)

您是否尝试过覆盖routes.rb这样的广告?我从未尝试过标准操作,但它可能对您有用:

resources :users do
  post 'update', :on => :member 
end