简体   繁体   English

从哈希中删除空值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM