Используя Sunspot , у меня есть следующие настройки:
Форма поиска
<div>
Search field
<%= text_field_tag :search, params[:search] %>
Online
<%= check_box_tag :online_search, 'online_search_value',
params[:online_search_checked] %>
Street Address
<%= text_field_tag :location, params[:search_loc] %>
</div>
Поиск контроллера
class SearchController < ApplicationController
def index
params[:online_search_checked] = true
restore_cookie
end
def results
update_cookie
restore_cookie
@search = Product.search do |q|
q.fulltext params[:search] unless params[:search].blank?
# Text field to search an address.
q.with(:location).near(params[:search_loc])
if params[:search_loc].present?
# Checkbox thats already checked off to search online.
# If it's un-checked It will not search online.
q.with(:online_search, false) if params[:online_search].nil?
end
@products = @search.results
end
def update_cookie
update_cookie_with_param(:online_search, :online_search_checked)
end
def restore_cookie
restore_param_from_cookie(:online_search_checked)
end
def update_cookie_with_param(value_param_name, checked_param_name)
checked = params[value_param_name].nil? ? "false" : "true"
cookies[checked_param_name] = { :value =>
checked, :expires => 2.weeks.from_now }
end
def restore_param_from_cookie(checked_param_name)
if cookies[checked_param_name]
params[checked_param_name] = (cookies[checked_param_name] == "true")
end
end
end
При поиске :location
я хочу, чтобы он включал :online_search
, если пользователь не снимает флажок.Вот что делает эта строка:
q.with(:online_search, false) if params[:online_search].nil?
Теперь, чтобы включить ее в поиск :location
.Как мне поступить с Sunspot?