2016-07-11 5 views
1

У меня есть приложение rails, в котором я пытаюсь обновить модель с атрибутами, которые я получаю в хеше.Rails update_attributes с динамическим хешем

Мой код:

attr_hash = {"name"=>"cat_name"} 

@category.update_attributes(attr_hash, :type => 'sample') 

Вот что я хочу, что тип будет фиксированной и атр хэш может быть любой атрибут базы на подчиненной формы. Но это дает мне ошибку. Есть идеи?

ответ

2
attr_hash = {"name"=>"cat_name"} 

@category.update_attributes(attr_hash.merge(type: "sample")) 

(потому что update_attributes принимает только один хэш)

Объяснение:

В настоящее время вы передаете это:

update_attributes({"name"=>"cat_name"}, {type: "sample"})

но вы хотите это:

update_attributes({"name"=>"cat_name", type: "sample"})

Итак, вам нужно объединить эти два хэша.

+0

Я получаю ActiveModel :: ForbiddenAttributesError при попытке поместить хеш-переменную в метод обновления. – user4965201

+0

Имеет ли ваша @ -категория 'имя', а также столбец' type'? Пожалуйста, поделитесь всем кодом контроллера. Я предполагаю, что вам не нужны параметры, которые вы хотите передать. У вас есть что-то вроде: 'params [" category "] [" name "]', но вы должны получить его так: 'params.require (: category) .permit (: name) ' – siegy22

+0

i havent whitelisted the params .. мой плохой – user4965201