Class: Backstage::ResourcesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/backstage/resources_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



39
40
41
42
43
44
45
46
# File 'app/controllers/backstage/resources_controller.rb', line 39

def create
  @record = @resource_config.model_class.new(record_params)
  if @record.save
    redirect_to edit_resource_path(resource: params[:resource], id: @record.id)
  else
    render :new, status: :unprocessable_entity
  end
end

#destroyObject



56
57
58
59
# File 'app/controllers/backstage/resources_controller.rb', line 56

def destroy
  @record.destroy
  redirect_to resources_path(resource: params[:resource])
end

#editObject



36
37
# File 'app/controllers/backstage/resources_controller.rb', line 36

def edit
end

#indexObject



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

def index
  @page = (params[:page] || 1).to_i
  per_page = Backstage.configuration.per_page
  scope = @resource_config.model_class.all

  if params[:q].present?
    col = @resource_config.display_column
    scope = scope.where("#{col} LIKE ?", "%#{params[:q]}%")
  end

  @resource_config.index_fields.select(&:enum?).each do |field|
    next unless params[field.name].present?
    scope = scope.where(field.name => params[field.name])
  end

  valid_columns = @resource_config.index_fields.map { |f| f.name.to_s }
  if params[:sort].present? && valid_columns.include?(params[:sort])
    @sort = params[:sort]
    @dir = (params[:dir] == "desc") ? "desc" : "asc"
    scope = scope.order("#{@sort} #{@dir}")
  end

  @total_pages = [(scope.count.to_f / per_page).ceil, 1].max
  @records = scope.offset((@page - 1) * per_page).limit(per_page)
end

#newObject



32
33
34
# File 'app/controllers/backstage/resources_controller.rb', line 32

def new
  @record = @resource_config.model_class.new
end

#updateObject



48
49
50
51
52
53
54
# File 'app/controllers/backstage/resources_controller.rb', line 48

def update
  if @record.update(record_params)
    redirect_to resources_path(resource: params[:resource])
  else
    render :edit, status: :unprocessable_entity
  end
end