[英]Remove empty values from hash
I have recive such params from request 我可以根据要求接受此类参数
params[:search] = {"user_id_in"=>[""], "status_in"=>[""], "priority_in"=>["", "8"]}
I need to clear it, because metasearch gem works incorrect with it 我需要清除它,因为metasearch gem不能正常工作
params[:search] = {"priority_in"=>["8"]}
I have a solution with double select usage: 我有一个双重选择用法的解决方案:
params[:search] = {"user_id_in"=>[""], "status_in"=>[""], "priority_in"=>["", "8"]} params[:search].select! do |k, v| v.select! do |vv| !vv.empty? end v.length > 0 end
Functional approach (except, of course, for the last assign since you asked for a in-place update): 功能方法(当然,自您要求就地更新以来的最后一次分配除外):
pairs = params[:search].map { |k, vs| [k, vs.reject(&:blank?)] }
params[:search] = Hash[pairs.select { |k, vs| vs.present? }]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.