首次使用Ransack搜索后如何丢弃初始/默认选择选项

时间:2013-04-05 11:50:55

标签: ruby-on-rails ransack

如果我指定一个默认值:下面几个月/几年的选定值,那么搜索后它总是会恢复为这些值。有没有办法在搜索后加载页面后,将选择设置为执行搜索的选择而不是默认值?

我想这需要在控制器中设置一次默认值,如果确定搜索不是第一个或者选择了其他值,则忽略它们。

<%= search_form_for @search, :html => {} do |f| %>
  <div class="control-group">
    <div class="controls form-inline">
      <%= f.select :rollout_month_eq, months, {:selected => months[Date.today.month - 1]} %>
      <%= f.select :rollout_year_eq, years, {:selected => years[1]} %>
      <%= f.submit "Apply" %>
    </div>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:1)

它应该像确定参数是否为nil一样简单。

<%= search_form_for @search, :html => {} do |f| %>
  <div class="control-group">
    <div class="controls form-inline">
      <%= f.select :rollout_month_eq, months, {:selected => params[:q].try(:[], :rollout_month_eq) || months[Date.today.month - 1]} %>
      <%= f.select :rollout_year_eq, years, {:selected => params[:q].try(:[], :rollout_year_eq) || years[1]} %>
      <%= f.submit "Apply" %>
    </div>
  </div>
<% end %>

编辑以反映您的参数结构。