2
私はRuby on Railsで作業しており、Rubyの許可関数を使ってハッシュからすべての値を許可しようとしています。それはむしろ単純なようですが、私はこれを動作させることができません。私はすでに許可についての参考文献を見直しており、このSOの質問how to permit an array with strong parametersに答えています。ハッシュからすべての値を許可する方法
ここに私のコードは
PERMITTED_PARAMS = [
:OriginCity,
:OriginState,
{ :PickupDates => {}}
].freeze
params = {"OriginCity"=>"Denver", "OriginState"=>"CO", "PickupDates"=>{"0"=>"2016-09-30"}}
filtered_params = params.permit(PERMITTED_PARAMS)
だと、filtered_paramsに対する所望の値は
{"OriginCity"=>"Denver", "PickupDates"=>{"0":"2016-09-30"}}
取得する方法上の任意のアドバイスですがfiltered_paramsのための結果の値は
{"OriginCity"=>"Denver", "PickupDates"=>{}}
ですPERMITTED_PARAMSを変更して希望の値を入力しますか?
':PickupDates =>のparams [:PickupDates] .try(:キー)'良いかもしれない、あなたが簡単にできるようにしたいです':PickupDates => params [:PickupDates] .try(:keys).to_a.select {| k |)は、あなたが期待しているものと一致するもののためにキーをフィルタリングします。 Integer(k)rescue nil} 'などがあります。私は強くparamsにキーに一致する正規表現を与える方法を見つけることができないので、手でそれをやっている。 –
これは動作します - 多くのありがとう(そして、同意 - ハッシュ配列ではありません)! – Craig
素晴らしい!はい、すべてのパラメータを受け入れることは許容されますが、強力なパラメータではそれ以上のことはできません。あなたが気にしているのであれば、必要なキーだけをフィルタリングすることができますが、コードはもっと複雑になります... –