【发布时间】:2014-01-31 21:19:39
【问题描述】:
我正在渲染一个模型,它是 JSON 格式的子书,如下所示:
{"id":2,"complete":false,"private":false, "books" [{ "id":2,"name":"Some Book"},.....
然后我通过将相同的 JSON 传回我的控制器来更新此模型,我收到以下错误:
ActiveRecord::AssociationTypeMismatch (Book (#2245089560) 预期,得到 ActionController::Parameters(#2153445460))
在我的控制器中,我使用以下内容进行更新:
@project.update_attributes!(project_params)
private
def project_params
params.permit(:id, { books: [:id] } )
end
无论我在permit 中将哪些属性列入白名单,我似乎都无法保存子模型。
我是否遗漏了一些明显的东西?
更新 - 另一个例子:
控制器:
def create
@model = Model.new(model_params)
end
def model_params
params.fetch(:model, {}).permit(:child_model => [:name, :other])
end
请求:
post 'api.address/model', :model => { :child_model => { :name => "some name" } }
型号:
accepts_nested_attributes_for :child_model
错误:
预期的 ChildModel,得到 ActionController::Parameters
试过这个方法无效:http://www.rubyexperiments.com/using-strong-parameters-with-nested-forms/
【问题讨论】:
标签: json ruby-on-rails-4 strong-parameters