如何检查 "params[:attribute]" 中是否没有值
How to check for the presence of no value in a "params[:attribute]"
当我有一个这样的数组时:
[5] pry(#<HomeController>)> params["search"]["sources"] => [""]
如何检查该实例是否为真?
我尝试了以下方法,但失败了:
[8] pry(#<HomeController>)> params[:search][:sources].empty?
=> false
[9] pry(#<HomeController>)> params[:search][:sources].nil?
=> false
[3] pry(#<HomeController>)> params["search"]["sources"].empty?
=> false
[4] pry(#<HomeController>)> params["search"]["sources"].eql? ""
=> false
[10] pry(#<HomeController>)> params[:search][:sources].blank?
=> false
[11] pry(#<HomeController>)> params[:search][:sources].any?
=> true
每当我的 params
的属性值为空或等于 ""
时,我想做一些具体的事情。
我希望它成为 if
语句的条件,因此在上述情况下它必须 return 为真。
这是实际完整的 params
我正在检查:
params
=> <ActionController::Parameters {"search"=><ActionController::Parameters {"keywords"=>"", "types"=>[""], "categories"=>["", "", "", "", "", "", "", "Hockey", "", "", "", "", "", "", "", "", "", "", "", "", ""], "date_from"=>"", "date_to"=>"", "sources"=>[""], "genders"=>[""], "ages"=>[""]} permitted: false>, "controller"=>"home", "action"=>"index"} permitted: false>
基本上我想检查 params[:search][:categories]
中的值是否不为空。在上面的例子中,我们看到其中一个值等于字符串 Hockey
,所以在这种情况下它应该 return false.
我可能会尽量避免检查两者——空数组或仅包含空字符串的数组。但如果必须的话,我会明确表示:
array = params[:search][:sources]
array.blank? || array == ['']
另一种选择可能是:
params[:search][:sources].first.blank?
但我认为第二种选择更难理解(至少在所有情况下return true
)。
对于 categories
,条件为:
params[:search][:categories].any?(&:present?)
params[:search][:sources].all?(&:blank?)
当我有一个这样的数组时:
[5] pry(#<HomeController>)> params["search"]["sources"] => [""]
如何检查该实例是否为真?
我尝试了以下方法,但失败了:
[8] pry(#<HomeController>)> params[:search][:sources].empty?
=> false
[9] pry(#<HomeController>)> params[:search][:sources].nil?
=> false
[3] pry(#<HomeController>)> params["search"]["sources"].empty?
=> false
[4] pry(#<HomeController>)> params["search"]["sources"].eql? ""
=> false
[10] pry(#<HomeController>)> params[:search][:sources].blank?
=> false
[11] pry(#<HomeController>)> params[:search][:sources].any?
=> true
每当我的 params
的属性值为空或等于 ""
时,我想做一些具体的事情。
我希望它成为 if
语句的条件,因此在上述情况下它必须 return 为真。
这是实际完整的 params
我正在检查:
params
=> <ActionController::Parameters {"search"=><ActionController::Parameters {"keywords"=>"", "types"=>[""], "categories"=>["", "", "", "", "", "", "", "Hockey", "", "", "", "", "", "", "", "", "", "", "", "", ""], "date_from"=>"", "date_to"=>"", "sources"=>[""], "genders"=>[""], "ages"=>[""]} permitted: false>, "controller"=>"home", "action"=>"index"} permitted: false>
基本上我想检查 params[:search][:categories]
中的值是否不为空。在上面的例子中,我们看到其中一个值等于字符串 Hockey
,所以在这种情况下它应该 return false.
我可能会尽量避免检查两者——空数组或仅包含空字符串的数组。但如果必须的话,我会明确表示:
array = params[:search][:sources]
array.blank? || array == ['']
另一种选择可能是:
params[:search][:sources].first.blank?
但我认为第二种选择更难理解(至少在所有情况下return true
)。
对于 categories
,条件为:
params[:search][:categories].any?(&:present?)
params[:search][:sources].all?(&:blank?)