我仍在尝试围绕Rails 4 中的强参数ActiveModel::ForbiddenAttributesError
。当我尝试为另一个模型提交带有参数的表单时,我得到了一个它belongs_to
。
Product :has_many DiskFiles
经过一番调查,我意识到我需要先符号化我的钥匙,然后再将它们传递给这样的东西,否则我会得到ForbiddenAttributesError
. 所以这将起作用:
#disk_files_controller.rb
def update
product = @disk_file.create_product(params[:product].symbolize_keys) if params[:product]
...
end
检查参数[:产品]:
>> params[:product]
=> {"title"=>"Registration Test5", "year"=>"1988", "region_id"=>"7"}
在任何一种情况下,我都允许这些参数(除其他外):
def disk_file_params
params.require(:disk_file).permit(:filename, :file_path, :title,
:product, :year, :region_id)
end
作为最初的所有参数,strings
那么我们应该允许string
参数的版本而不是symbol
?!? 不确定这里的最佳做法是什么?!?我知道 Rails 4 模板包含符号化参数。