【发布时间】:2020-01-25 20:28:39
【问题描述】:
当我有一个这样的数组时:
[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 语句的条件,所以在上述情况下它必须返回 true。
这是我正在检查的实际完整的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,所以在这种情况下它应该返回false。
【问题讨论】:
-
请不要使用“编辑 1”之类的标签。而是将添加内容纳入问题中,就好像它一直存在一样。如果我们需要知道,我们可以知道发生了什么变化。 “Should “Edit:” in edits be discouraged?”有助于解释。此外,
params["search"]["sources"] => [""]不是数组,而是对象转储。相反,我们需要实际的 Ruby 代码来定义数组并将其分配给params。
标签: ruby-on-rails ruby ruby-on-rails-6