在 AngularJS 服务中包装参数以更新 API 请求

Wrap parameters in AngularJS service for update API request

我正在尝试使用 AngularJS 和 API

进行更新

服务:expense.js

angular
  .module('timeTrackerApp.services',[])
  .service('Expense', ['$resource', function ($resource) {
    return $resource('/api/v1/expenses/:id', {id:'@id'}, {
      'update': {
        method: 'PUT'
      },
      'destroy': {
        method: 'DELETE'
      }
    })
  }])

控制器:expenses_controller.rb

def permitted_params
   params.require(:expense).permit(:name, :price)
end

所以预计 JSON 格式是 { expense: { name: "value", price: value } }
但我得到了 { name: "value", price: value }

所以谁能帮我把它包装成根节点(费用)?

当控制器名称与模型名称匹配时,

Rails 会自动包装参数。 Check doc.

如果它失败了,你可以在你的控制器中手动完成:

 wrap_parameters :expense, include: [:name, :price]

所以如果您收到:

 { name: 'name', price: 'price' }

控制器会给你:

 { name: 'name', price: 'price', expense: { name: 'name', price: 'price' } }

服务器端也是如此,因为它简洁明了。