ransack gem:在下拉列表中过滤年份和月份

时间:2018-01-17 09:14:12

标签: ruby-on-rails ransack

我使用Rails 5.1和当前版本的ransack gem。

我有一个"统计数据"我显示工作的页面,我想用两个下拉选择字段实现过滤功能,1)年(2011-2018)和2)月(jan-dec)。我怎样才能做到这一点?

我在考虑像

这样的东西
# in statistics index view
<%= search_form_for @search do |f| %>
  <%= f.grouping_fields(f.object.new_grouping) do |g| %>
    <%= g.condition_fields(g.object.new_condition) do |c| %>
      <%= # here the years dropdown list%>

      <%= # here the months dropdown list%>
      <% end %>
    <% end %>
  <% end %>
  <%= f.submit "filter" %>
<% end %>

它应该如何正确?

1 个答案:

答案 0 :(得分:2)

我不确定是否可以通过搜索来完成,您可以选择使用简单的形式: - 像这样: -

<%= form_tag jobs_path, method: :get%>
  <%= select_year(Date.today, {:prompt => "Year",:start_year => DateTime.now.year,:end_year => DateTime.now.year - 7, prefix: 'start_date'},{:field_name => 'year', :id => 'start-year'}) %>
  <%= select_month(Date.today, {:prompt => "month",use_short_month: true, prefix: 'start_date'},{:field_name => 'month', :id => 'start-month'}) %>
  <%= submit_tag("Search Job", :id=>"button", :class=>"Test", :name=>"submit") %>
<%end%>

并在您的索引操作中

def index
  if params[:year].present? or params[:month].present?
   #@jobs = Job.where("colum BETWEEN ? AND ?", ...)
   #@jobs = your_own_query_for_filter 
  else
    @jobs = Job.all
  end
end

我没有正确编写代码,这只是你可以用这种方式做的一个例子。希望它会对你有所帮助。

在此处for date select form helper

相关问题