-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathsearch_controller.rb
61 lines (46 loc) · 1.46 KB
/
search_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
require "slimmer/headers"
class SearchController < ApplicationController
before_filter :setup_slimmer_artefact, only: :index
before_filter :set_expiry
before_filter :remove_search_box
rescue_from GdsApi::BaseError, with: :error_503
def index
search_params = SearchParameters.new(params)
if search_params.no_search? && params[:format] != "json"
render action: 'no_search_term' and return
end
search_response = search_client.search(search_params)
@search_term = search_params.search_term
if (search_response["scope"].present?)
@results = ScopedSearchResultsPresenter.new(search_response, search_params)
else
@results = SearchResultsPresenter.new(search_response, search_params)
end
@facets = search_response["facets"]
@spelling_suggestion = @results.spelling_suggestion
fill_in_slimmer_headers(@results.result_count)
respond_to do |format|
format.html { render locals: { full_width: true } }
format.json do
render json: @results
end
end
end
protected
def search_client
Frontend.search_client
end
def remove_search_box
set_slimmer_headers(remove_search: true)
end
def fill_in_slimmer_headers(result_count)
set_slimmer_headers(
result_count: result_count,
format: "search",
section: "search",
)
end
def setup_slimmer_artefact
set_slimmer_dummy_artefact(:section_name => "Search", :section_link => "/search")
end
end