해시

2012-09-06 4 views
1

에서 빈 값을 제거 내가 요청에서 같은 PARAMS을 받아 봐 가지고해시

params[:search] = {"user_id_in"=>[""], "status_in"=>[""], "priority_in"=>["", "8"]} 

params[:search] = {"priority_in"=>["8"]} 
+0

params : params [: search] = { "priority_in"=> [ "8"]}에서 가져 오시겠습니까? –

+0

[ ""] 또는 "" –

답변

4

내가 두 번 선택 사용과 솔루션을 메타 검색 보석은 그것으로 잘못 작동하기 때문에 나는 그것을 삭제해야 :

 
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 
+2

+1과 같은 모든 값을 제거하고 싶습니다. '! vv.empty?'를 사용 하겠지만, 다소 차이는 없습니다. –

+0

예, 더 우아합니다. 나는 나의 해결책을 바로 잡는다! – Nucc

2

기능적 접근법 (예 : 전체 업데이트 요청 이후 마지막 할당시 제외) :

pairs = params[:search].map { |k, vs| [k, vs.reject(&:blank?)] } 
params[:search] = Hash[pairs.select { |k, vs| vs.present? }]