Я все еще пытаюсь обернуть мою голову вокруг Сильных параметров в Rails 4. Я получаю ActiveModel::ForbiddenAttributesError
при попытке отправить форму с Params для другой модели, что belongs_to
.Rails4: ForbiddenAttributesError на Params вложенного родителя
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 [: продукт]:
>> params[:product]
=> {"title"=>"Registration Test5", "year"=>"1988", "region_id"=>"7"}
в любом случае я разрешающий этот Params (среди прочих):
def disk_file_params
params.require(:disk_file).permit(:filename, :file_path, :title,
:product, :year, :region_id)
end
Будучи, как все params изначально strings
, тогда мы должны разрешить версию параметров string
вместо symbol
?!? Не знаете, что лучше всего здесь?!? Я знаю, что шаблоны Rails 4 содержат символизированные параметры.
блестящий; благодаря! ': product' - это встроенная модель для этой конкретной формы, поэтому' params.require (: disk_file) .permit (: filename,: file_path, product: [: title,: year,: region_id]) 'работал для меня! – Meltemi