搜索下拉列表的枚举过滤器

Ransack on enum filter for dropdown list

class Schedule < ApplicationRecord 
  belongs_to :event
  enum county: {USA: 0, INDIA: 1, Brasil: 2}
end

在 index.erb.html

中搜索 select
<%= f.collection_select :schedules_county_matches_all, Schedule.counties.map{ |dp| [dp.first, dp.first.humanize] }, :first.to_s, :second ,:include_blank => "All"%>

给出输出 select 下拉列表但不是 Postgres 数据库中存储为整数而不是字符串的值

<li class=""><span>All</span></li>
<li class=""><span>USA</span></li>
.......

作为工作过滤器,我想它应该在 li

中增加价值
<li value=""><span>All</span></li>
<li value="0"><span>USA</span></li>
.......

使用下面的代码行解决你的问题

<%= f.select :schedules_county_matches_all, Schedule.counties.map { |r| [r[0], r[1].to_i] }, include_blank: true %>

创建你的掠夺者。

  # user.rb
  enum role: [:Admin, :Analyst]
  ransacker :role, formatter: proc {|v| roles[v]} do |parent|
    parent.table[:role]
  end

然后在您的 index.html.erb

中添加该字段
<%= f.select :role_eq, User.roles.keys , {:include_blank => 'All Roles'}, { :class => 'form-control' } %>
<%= f.select :schedules_county_eq, options_for_select(Schedule.counties), include_blank: 'All' %>

Rails7、搜查2.5.0。小写字符串。