Сериализация массива с параметром strong_parameters
Я пытаюсь сохранить массив, используя гем strong_parameters. Но у меня есть проблемы с тем, как форма отправляет мой массив. Параметры выглядят так:
> params[:circuit]
=> {"title"=>"Some title", ..., "viewable_tasks"=>{"0"=>"woop", "1"=>"dee", ...}}
И мой circuit_params
функция выглядит так:
def circuit_params
params.require(:circuit).permit(:title, :id, viewable_tasks: { }, ... )
end
Я не могу получить синтаксис, чтобы мои параметры работали. Что я получаю в моей консоли:
> circuit_params
=> {"title"=>"implement plug-and-play mindshare",
"viewable_tasks"=>{"0"=>nil, "1"=>nil, "2"=>nil}, ...
В моей модели у меня есть:
class Circuit < ActiveRecord::Base
serialize :viewable_tasks, Array
...
end
Я заметил, что могу заставить его работать должным образом с атрибутами, которые я называю accepts_nested_attributes_for
на, так что это может иметь какое-то отношение к этому.
Спасибо за любую помощь
3 ответа
У меня просто была та же проблема, и это был правильный синтаксис:
def circuit_params
params.require(:circuit).permit(:title, :id, {:viewable_tasks => []}, ... )
end
Сериализованные элементы должны быть в конце параметров разрешения. По моему опыту (и я не знаю точно, почему), вы не можете ввести другой несериализованный элемент после сериализованного... попробуйте и дайте нам знать.
Попробуйте использовать это:
def circuit_params
params.require(:circuit).permit(:title, :id, viewable_tasks:[], ... )
end