1

全部,

我收到了这个请求:

{"utf8"=>"✓", "search"=>{"name_equals"=>"", "age_equals"=>""}}

我想检查的是,是否name_equalsage_equals已经设置了一个值,只需知道 params[:search]。可以有search比示例中更多的值。

我希望有人可以帮助我解决这个问题,谢谢。

-e- 你说得对,知道我同意:

blank = params[:search].values.all?(&:blank?) if params[:search] != nil
@search = BillingDestination.search(blank ? nil : params[:search])

Tass 和 Łukasz Niemier 答案的组合;) Tass 忘记了 .values 而 Lukasz 忘记了 & 符号。

我怎么能在一条线上做到这一点?

4

3 回答 3

2

一起去

params['search'].values.any?(&:blank?)
于 2013-02-26T09:03:34.943 回答
1

只需检查所有值是否都存在。

params[:search].all? { |k, v| v.present? }

为此,您也可以检查这些值

params[:search].values.all?(&:present?)

确实错过了 & 标志。

于 2013-02-26T09:13:04.873 回答
0

你可以使用:

if params['search'] && (params['search']['name_equals'] && params['search']['name_equals'])
# do something
end

和:

 # get all keys
 all_the_keys = params['search'].keys 

 # or if you only want ones that contain something
 all_the_non_blank_keys = params['search'].select {|k,v| !v.blank?}
于 2013-02-26T09:00:07.467 回答