base/app/controllers/search_controller.rb
class SearchController < ApplicationController
include ActionView::Helpers::SanitizeHelper
RESULTS_SEARCH_PER_PAGE=16
def index
@search_result =
if params[:q].blank? || params[:q].strip.size < SocialStream::Search::MIN_QUERY
Kaminari.paginate_array([])
elsif params[:mode] == "quick"
search :quick
else
search :extended
end
respond_to do |format|
format.html {
if request.xhr?
if params[:mode] == "quick"
render partial: "quick"
else
if params[:q].present?
render partial: 'results'
else
render partial: 'index'
end
end
end
}
format.json {
json_obj = (
params[:type].present? ?
{ params[:type].pluralize => @search_result } :
@search_result
)
render :json => json_obj.as_json(helper: self)
}
format.js
end
end
private
def search mode
page = ( mode == :quick ? 1 : params[:page] )
limit = ( mode == :quick ? 7 : RESULTS_SEARCH_PER_PAGE )
SocialStream::Search.search(params[:q],
current_subject,
mode: mode,
key: params[:type],
page: page,
limit: limit)
end
end