使用strong_parameters序列化数组

时间:2013-04-13 01:28:39

标签: ruby ruby-on-rails-4 strong-parameters

我正在尝试使用strong_parameters gem保存数组。但我遇到表单如何发送我的数组的问题。 params看起来像这样:

> 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 个答案:

答案 0 :(得分:14)

我遇到了同样的问题,这是正确的语法:

def circuit_params
  params.require(:circuit).permit(:title, :id, {:viewable_tasks => []}, ... )
end

答案 1 :(得分:0)

序列化物品必须在许可证参数的末尾。根据我的经验(我不确切知道为什么),你不能在序列化的项目之后输入另一个非序列化项目...试着让我们知道。

答案 2 :(得分:-1)

尝试使用:

def circuit_params
  params.require(:circuit).permit(:title, :id, viewable_tasks:[], ... )
end