Nested strong parameters in rails - AssociationTypeMismatch MYMODEL expected, got ActionController::Parameters()
我正在渲染一个模型,它是 JSON 格式的子书,如下所示:
1 | {"id":2,"complete":false,"private":false,"books" [{"id":2,"name":"Some Book"},..... |
然后我通过将相同的 JSON 传回我的控制器来更新此模型,我收到以下错误:
ActiveRecord::AssociationTypeMismatch (Book (#2245089560) 预期,得到 ActionController::Parameters(#2153445460))
在我的控制器中,我使用以下内容进行更新:
1 2 3 4 5 6 7 | @project.update_attributes!(project_params) private def project_params params.permit(:id, { books: [:id] } ) end |
无论我在
我是否遗漏了一些明显的东西?
更新 - 另一个例子:
控制器:
1 2 3 4 5 6 | def create @model = Model.new(model_params) end def model_params params.fetch(:model, {}).permit(:child_model => [:name, :other]) end |
请求:
1 | post 'api.address/model', :model => { :child_model => { :name =>"some name" } } |
型号:
1 | accepts_nested_attributes_for :child_model |
错误:
预期的 ChildModel,得到 ActionController::Parameters
尝试此方法无济于事:http://www.rubyexperiments.com/using-strong-parameters-with-nested-forms/
你在你的项目模型上使用
而不是
1 2 3 | def project_params params.permit(:id, :complete, :false, :private, books_attributes: [:id, :name]) end |
我正在使用 Angular.js
n
n
n
n