1

全て、

私はこのリクエストを受け取りました:

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

私が確認したいのは、params[:search] を知るだけで、値が設定されているかどうname_equalsかです。age_equals例よりも多くの値が存在する可能性があります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 は & 記号を忘れました。

どうすればこれを1行で行うことができますか?

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 に答える