Class: SubjectsController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/subjects_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject

POST /subjects POST /subjects.json



91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'app/controllers/subjects_controller.rb', line 91

def create
  @subject = Subject.new(subject_params)

  respond_to do |format|
    if @subject.save
      format.html { redirect_to @subject, notice: t('controller.successfully_created', model: t('activerecord.models.subject')) }
      format.json { render json: @subject, status: :created, location: @subject }
    else
      prepare_options
      format.html { render action: "new" }
      format.json { render json: @subject.errors, status: :unprocessable_entity }
    end
  end
end

#destroyObject

DELETE /subjects/1 DELETE /subjects/1.json



123
124
125
126
127
128
129
130
# File 'app/controllers/subjects_controller.rb', line 123

def destroy
  @subject.destroy

  respond_to do |format|
    format.html { redirect_to subjects_url, notice: t('controller.successfully_deleted', model: t('activerecord.models.subject')) }
    format.json { head :no_content }
  end
end

#editObject

GET /subjects/1/edit



86
87
# File 'app/controllers/subjects_controller.rb', line 86

def edit
end

#indexObject

GET /subjects GET /subjects.json



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
# File 'app/controllers/subjects_controller.rb', line 9

def index
  sort = {sort_by: 'created_at', order: 'desc'}
  case params[:sort_by]
  when 'name'
    sort[:sort_by] = 'term'
  end
  sort[:order] = 'asc' if params[:order] == 'asc'

  search = Subject.search
  query = params[:query].to_s.strip
  unless query.blank?
    @query = query.dup
    query = query.gsub(' ', ' ')
    search.build do
      fulltext query
    end
  end

  search.build do
    order_by sort[:sort_by], sort[:order]
  end

  role = current_user.try(:role) || Role.default_role
  search.build do
    with(:required_role_id).less_than_or_equal_to role.id
  end

  page = params[:page] || 1
  search.query.paginate(page.to_i, Subject.default_per_page)
  @subjects = search.execute!.results
  session[:params] = {} unless session[:params]
  session[:params][:subject] = params

  flash[:page_info] = {page: page, query: query}

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @subjects }
    format.rss
    format.atom
  end
end

#newObject

GET /subjects/new



76
77
78
79
80
81
82
83
# File 'app/controllers/subjects_controller.rb', line 76

def new
  @subject = Subject.new

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @subject }
  end
end

#showObject

GET /subjects/1 GET /subjects/1.json



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/controllers/subjects_controller.rb', line 54

def show
  if params[:term]
    subject = Subject.where(term: params[:term]).first
    redirected_to subject
    return
  end

  search = Sunspot.new_search(Manifestation)
  subject = @subject
  search.build do
    with(:subject_ids).equal_to subject.id if subject
  end
  page = params[:work_page] || 1
  search.query.paginate(page.to_i, Manifestation.default_per_page)

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @subject }
  end
end

#updateObject

PUT /subjects/1 PUT /subjects/1.json



108
109
110
111
112
113
114
115
116
117
118
119
# File 'app/controllers/subjects_controller.rb', line 108

def update
  respond_to do |format|
    if @subject.update_attributes(subject_params)
      format.html { redirect_to @subject, notice: t('controller.successfully_updated', model: t('activerecord.models.subject')) }
      format.json { head :no_content }
    else
      prepare_options
      format.html { render action: "edit" }
      format.json { render json: @subject.errors, status: :unprocessable_entity }
    end
  end
end