Skip to content
This repository was archived by the owner on Mar 9, 2020. It is now read-only.

Commit c100b36

Browse files
committed
controllers: Pull the scoped_search concern out
This fixes the last complaint of codeclimate about those controllers.
1 parent 4e2d0bf commit c100b36

3 files changed

Lines changed: 25 additions & 26 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# everything concerning the scoped_search implementation
2+
module DefaultSearch
3+
def default_index(klass, params)
4+
klass.search_for(params[:search], order: params[:order])
5+
rescue => e
6+
flash[:error] = e.to_s
7+
klass.search_for ''
8+
end
9+
10+
def auto_complete_search_impl(klass, search_params)
11+
begin
12+
@items = klass.complete_for(search_params)
13+
rescue ScopedSearch::QueryNotSupported => e
14+
@items = [{ error: e.to_s }]
15+
end
16+
render json: @items
17+
end
18+
end

app/controllers/people_controller.rb

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
11
class PeopleController < ApplicationController
22
include DefaultResponses
3+
include DefaultSearch
34

45
before_action :set_person, only: [:show, :edit, :update, :destroy]
56

67
# GET /people
78
# GET /people.json
89
def index
9-
@people = Person.search_for(params[:search], :order => params[:order])
10-
rescue => e
11-
flash[:error] = e.to_s
12-
@people = Person.search_for ''
10+
@people = default_index(Person, params)
1311
end
1412

1513
def auto_complete_search
16-
begin
17-
@items = Person.complete_for(params[:search])
18-
rescue ScopedSearch::QueryNotSupported => e
19-
@items = [{:error =>e.to_s}]
20-
end
21-
render :json => @items
14+
auto_complete_search_impl(Person, params[:search])
2215
end
2316

2417
# GET /people/1

app/controllers/projects_controller.rb

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,21 @@
11
class ProjectsController < ApplicationController
22
include DefaultResponses
3+
include DefaultSearch
34

45
before_action :set_project, only: [:show, :add_person, :edit, :update, :destroy]
56

67
# GET /projects
78
# GET /projects.json
89
def index
9-
@projects = Project.search_for(params[:search], :order => params[:order])
10-
rescue => e
11-
flash[:error] = e.to_s
12-
@projects = Project.search_for ''
10+
@projects = default_index(Project, params)
1311
end
1412

1513
def auto_complete_search
16-
begin
17-
@items = Project.complete_for(params[:search])
18-
rescue ScopedSearch::QueryNotSupported => e
19-
@items = [{:error =>e.to_s}]
20-
end
21-
render :json => @items
14+
auto_complete_search_impl(Project, params[:search])
2215
end
2316

2417
def auto_complete_people_search
25-
begin
26-
@items = Person.complete_for(params[:people_search])
27-
rescue ScopedSearch::QueryNotSupported => e
28-
@items = [{:error =>e.to_s}]
29-
end
30-
render :json => @items
18+
auto_complete_search_impl(Person, params[:people_search])
3119
end
3220

3321
# GET /projects/1

0 commit comments

Comments
 (0)