Rails检查是否在不知道密钥的情况下设置了参数值

时间:2013-02-26 08:43:51

标签: ruby-on-rails

所有

我收到了这个请求:

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

我想检查的是,如果name_equalsage_equals设置了值,只需知道 PARAMS [:检索]。 search中的值可能比示例中的值多。

我希望有人可以帮助我,谢谢。

-E- 你是对的,我知道我选择:

blank = params[:search].values.all?(&:blank?) if params[:search] != nil
@search = BillingDestination.search(blank ? nil : params[:search])
塔斯和ŁukaszNiemier之间的结合回答;)Tass忘记了.values和Lukasz&登录。

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

3 个答案:

答案 0 :(得分:2)

使用

params['search'].values.any?(&:blank?)

答案 1 :(得分:1)

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

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

为此,您也可以检查值

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

错过了&确实签了。

答案 2 :(得分: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?}