0

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

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

<%= 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 %>
4

1 回答 1

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 %>

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

于 2013-04-05T12:49:37.570 回答