繁体   English   中英

Rails Ransack gem:使用一个条件搜索多个值

[英]Rails Ransack gem: search for multiple values with one condition

我使用 ransack gem,我有一个 select 字段event_id可以是字符串或数组,例如:90 或 [ 145, 147, 148 ]

我拥有的代码在传入数组时返回错误:

ransack("job_name_cont" => job_name, "event_id_eq" => event_id).result
[1] pry(Job)> ransack("job_name_cont" => job_name, "event_id_eq" => event_ids).result 
NoMethodError: undefined method `to_i' for [145, 147, 148]:Array
Did you mean?  to_s
               to_a
               to_h

我的 model:

class Job < ActiveRecord::Base
  belongs_to :event
end

class Event < ActiveRecord::Base
  has_many :jobs, dependent: :destroy
end

如何使用 event_id 搜索是数组?

如果你查看Ransack 的搜索匹配器,你会看到一个带有*_in - match any values in array如果你想在 arrays 中搜索,这就是你所需要的。

因为您的event_ids可以作为字符串或数组输入,而*_in需要数组,所以我们必须确保始终为它提供数组。

[event_ids].flatten # returns an array all the time

下面的查询现在应该可以正常工作了。

ransack("job_name_cont" => job_name, "event_id_in" => [event_ids].flatten).result

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM