ruby-on-rails Rails参数:require key,then permit array of hash

zpjtge22  于 5个月前  发布在  Ruby
关注(0)|答案(2)|浏览(46)

有人能帮我弄清楚如何要求和允许一组参数,看起来像这样:

<ActionController::Parameters { 
    "people"=>[
      {"id"=>"1", "first"=>"Jane", "last"=>"Doe"},
      {"id"=>"2", "first"=>"John", "last"=>"Doe"}
    ]
} permitted: false>

字符串
数据是用JavaScript编写的:

const formData = new FormData()
people.forEach(person => {
    formData.append('people[][id]', person.id)
    formData.append('people[][first]', person.first)
    formData.append('people[][last]', person.last)
})


我已经尝试了一些不同的格式(有没有一种更Rails的方式来构建它?),以及许多不同的输入,但都没有成功。

params.require(:people).each { |person| person.permit(:id, :first, :last) }


这不会崩溃,但似乎也不允许任何事情。
我还尝试用people[][person][id]设置我的数据,

params.require(:people).permit(person: [:id, :first, :last])


但那也没用

7cjasjjr

7cjasjjr1#

params.require(:people)
params.permit(people: [:id, :first, :last])

字符串
第一行只是为了在缺少键时引发错误。.permit(people: [:id, :first, :last])允许people键和一个带有键:id, :first, :last的哈希数组。

2jcobegt

2jcobegt2#

我遇到了这个问题,但需要在参数中允许其他顶级键(即在本例中为{ people: [{...}, {...}], token: '...' })。
最后,我发现这是有效的:

params.require(:people).map do |p| 
  p.permit(:id, :first, :last)
end

字符串
只是要注意,这返回一个数组,而不是一个散列,所以原来的结构是平坦的一点。只是为了以防万一,这是有用的其他人搜索像我一样。

相关问题