Сериализация массива с параметром 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
Другие вопросы по тегам