Как установить условия поиска по умолчанию с помощью Searchlogic? - PullRequest
0 голосов
/ 21 апреля 2010

У меня есть форма поиска на этой странице:

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

1 Ответ

1 голос
/ 21 апреля 2010

Есть несколько способов сделать это, я думаю, что самый простой / быстрый способ:

@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.

...