kikeda1104's blog

備忘録・技術に関することを書いています。(webエンジニア)

Strong parameterで受け取れなかったparameter

Strong Parameterを使っていて、取れないケースあたってしまい、後回しにしたので、気になっている。 Workaroundや、Hackな対応をする予定なので、明日また書き直す。

{
  hoge: { 
    id: '1',
    name: '2',
    age: '29',
    '1': {
      ...
    },
    '2': {
      ...
    }
  }
}
class HogeController < ApplicationController
  private
  def set_params
    # 間違っています。
    params.reuqire(:hoge).permit(:id, :name, :age, '1', '2')
  end
end

ここで、まず無理でした。数値をシンボル化できず、Strong Parameterでセットできないため。

...
def set_params
  params.require(:hoge).permit(:id, :name, :age).to_h.merge((1..2).each_with_object({}) { |i, h| h[i.to_s] = params[:hoge][i.to_s] })
end
...
  • また明日、書き直します。

参考

http://api.rubyonrails.org/classes/ActionController/Parameters.html