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

Javascript 如何使Rails标准资源在更新时接受POST,javascript,ruby-on-rails,rest,angularjs,Javascript,Ruby On Rails,Rest,Angularjs,我一直使用AngularJS-Rails功能。ngResource在创建和更新时发送POST请求。我为ngResource找到了这个问题的解决方案,但我想在Rails方面解决它。我认为在不同的URI上没有任何冲突的课程更新和创建执行您是否尝试在routes.rb中像这样覆盖它?我从未用标准动作尝试过,但它可能只适合你: resources :users do post 'update', :on => :member end 您可以将Rails资源更改为接受更新操作的post方法。

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

您是否尝试在
routes.rb
中像这样覆盖它?我从未用标准动作尝试过,但它可能只适合你:

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

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

正如您所说,您找到了一个在ngResource上发送PUT请求的解决方案。 我强烈建议这样做

从, ngResource不支持开箱即用,但它非常容易实现:

var res = $resource('/your/url/:id', {foo: 'bar'}, {'put': {method: 
  'PUT', params: {foo: 'baz'}, isArray: false}});
下面是关于它的另一个讨论,我们最好不要再次使用
POST
进行更新


如果它与其他更新方法冲突,您可以添加
资源:用户,:except=>:update do
问题是,在调用$save时,ngResource不区分创建和更新操作。若uri存在于对象中,它只是将ID追加到uri中。因此,我需要覆盖资源实例原型中的$save方法。