簡體   English   中英

如何使用Searchlogic設置默認搜索條件?

[英]How do I set default search conditions with Searchlogic?

我在此頁面上有一個搜索表:

http://staging-checkpointtracker.aptanacloud.com/events

如果您從下拉列表中選擇一個州,您將得到零結果,因為您沒有選擇一個或多個事件划分(復選框)。

我想要的是在頁面首次加載時將復選框默認設置為“已選中” ...以顯示所有部門中的事件...但是我希望用戶在進行過濾時能夠反映出用戶所做的更改。

這是我的事件控制器中的索引方法:

def index
  @search = Event.search(params[:search])

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @events }
  end
end

這是我的搜索表:

<% form_for @search do |f| %>

<div>
<%= f.label :state_is, "State" %> <%= f.select :state_is, ['AK','AL','AR','AZ','CA','CO','CT','DC','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY'], :include_blank => true %>
</div>

<div>
    <%= f.check_box :division_like_any, {:name => "search[:division_like_any][]"}, "Sprint", :checked => true %> Sprint (2+ hours)<br/>
    <%= f.check_box :division_like_any, {:name => "search[:division_like_any][]"}, "Sport" %> Sport (12+ hours)<br/>
    <%= f.check_box :division_like_any, {:name => "search[:division_like_any][]"}, "Adventure" %> Adventure (18+ hours)<br/>
    <%= f.check_box :division_like_any, {:name => "search[:division_like_any][]"}, "Expedition" %> Expedition (48+ hours)<br/>
</div>

<%= f.submit "Find Events" %>
<%= link_to 'Clear', '/events' %>
<% end %>

有幾種方法可以做到這一點,我認為最簡單/最快的方法是:

@search = Event.search(params[:search] || Event::DEFAULT_SEARCH_PARAMETERS)

在event.rb

class Event < A:RB
  DEFAULT_SEARCH_PARAMETERS = {:state_is => 'NY', :foo => 'bar'} # set your defaults here
end

話雖如此,我不確定如何使用復選框。 您還可以考慮以下選項之一:

有一個SearchSetting模型,其中包含所有可搜索的參數(如果用戶可以保存搜索,或者保持斷開狀態,也可以為用戶保留此參數)。 這將使您的表單更加簡單。

添加一個“ All Divisions復選框,默認情況下處於選中狀態。 少量的javascript來管理復選框的狀態和自定義search方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM