Class: SimpleAdmin::ResourcesController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/simple_admin/resources_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



55
56
57
58
59
60
61
62
63
64
65
# File 'app/controllers/simple_admin/resources_controller.rb', line 55

def create
  model_klass = params[:model_klass_name].constantize

  resource = model_klass.new(resource_params)

  if resource.save
    render json: resource
  else
    render json: resource.errors
  end
end

#destroyObject



78
79
80
81
82
83
# File 'app/controllers/simple_admin/resources_controller.rb', line 78

def destroy
  model_klass = params[:model_klass_name].constantize
  resource = model_klass.find(params[:id])

  resource.destroy
end

#indexObject



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
# File 'app/controllers/simple_admin/resources_controller.rb', line 3

def index
  model_klass  = params[:model_klass_name].constantize
  model_fields = params[:model_fields].map { |field_attributes| field_attributes[:field_name] }

  per_page = params[:per_page].to_i
  page     = params[:page].to_i if params[:page].present?
  total    = model_klass.count

  resources = model_klass.limit(per_page)

  if params[:query].present?
    search_result = search(params[:query], model_klass, params[:model_attributes])

    resources = search_result[:resources]
    total     = search_result[:total]
  end

  resources = resources.offset((per_page * page) - per_page) if page.present?

  if params[:sort].present?
    resources = resources.order(params[:sort][:column_name] => params[:sort][:order])
  else
    resources = resources.order(id: :asc)
  end

  resources = resources.map do |resource|
    _resource = {}

    resource.attributes.each do |attribute_name, attribute_value|
      next unless model_fields.include?(attribute_name)

      _resource[attribute_name] = attribute_value
    end

    _resource
  end

  render json: {
    resources: resources,
    total:     total
  }
end

#showObject



46
47
48
49
50
51
52
53
# File 'app/controllers/simple_admin/resources_controller.rb', line 46

def show
  model_klass = params[:model_klass_name].constantize
  model_fields = params[:model_fields].map { |model_field| model_field['field_name'] }

  resource = model_klass.find(params[:id]).attributes.slice(*model_fields)

  render json: resource
end

#updateObject



67
68
69
70
71
72
73
74
75
76
# File 'app/controllers/simple_admin/resources_controller.rb', line 67

def update
  model_klass = params[:model_klass_name].constantize
  resource = model_klass.find(params[:id])

  if resource.update(resource_params)
    render json: resource
  else
    render json: resource.errors
  end
end