【发布时间】:2013-08-13 21:23:07
【问题描述】:
我仍在尝试围绕 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
检查参数[:product]:
>> 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 模板包含符号化参数。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 params actioncontroller strong-parameters