Я работаю в 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"=>{}}
Хотя желаемое значение для filtered_params является
{"OriginCity"=>"Denver", "PickupDates"=>{"0":"2016-09-30"}}
Любые советы о том, как для получения желаемое значение, изменив PERMITTED_PARAMS?
': PickupDates => Params [: PickupDates] .try (: ключи)' может быть лучше, тогда вы сможете легко отфильтруйте ключи для вещей, которые соответствуют ожидаемым: ': PickupDates => params [: PickupDates] .try (: keys) .to_a.select {| k | Например, Integer (k) rescue nil}. Я не могу найти способ придавать сильным параметрам регулярное выражение для соответствия ключам, чтобы вы застряли, делая это вручную. –
это работает - большое спасибо (и, согласен - хэш не массив)! – Craig
Отлично! И да принятие всех параметров является немного разрешительным, но из коробки сильные параметры не делают для вас гораздо больше. Если вы заинтересованы, вы можете фильтровать только нужные вам ключи и т. Д., Но код будет усложняться ... –