Class: Terrazzo::ApplicationController

Inherits:
ActionController::Base
  • Object
show all
Includes:
Superglue::Controller, UsesSuperglue::TemplateLookupOverride
Defined in:
app/controllers/terrazzo/application_controller.rb

Instance Method Summary collapse

Methods included from UsesSuperglue::TemplateLookupOverride

#_render_template

Instance Method Details

#createObject



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'app/controllers/terrazzo/application_controller.rb', line 63

def create
  @resource = resource_class.new(resource_params("create"))
  assign_has_one_associations(@resource)

  if @resource.save
    redirect_to after_resource_created_path(@resource),
      notice: t("terrazzo.controllers.create.success",
        resource_name: resource_name)
  else
    @page = Terrazzo::Page::Form.new(dashboard, @resource)
    render :new, status: :unprocessable_entity
  end
end

#destroyObject



93
94
95
96
97
98
99
100
# File 'app/controllers/terrazzo/application_controller.rb', line 93

def destroy
  @resource = find_resource(params[:id])
  @resource.destroy

  redirect_to after_resource_destroyed_path,
    notice: t("terrazzo.controllers.destroy.success",
      resource_name: resource_name)
end

#editObject



58
59
60
61
# File 'app/controllers/terrazzo/application_controller.rb', line 58

def edit
  @resource = find_resource(params[:id])
  @page = Terrazzo::Page::Form.new(dashboard, @resource)
end

#indexObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/controllers/terrazzo/application_controller.rb', line 22

def index
  search = Terrazzo::Search.new(scoped_resource, dashboard, params[:search])
  resources = search.run

  filter = Terrazzo::Filter.new(resources, dashboard, params[:filter], params[:filter_value])
  resources = filter.run

  order = Terrazzo::Order.new(
    attribute: params[:order] || default_sorting_attribute,
    direction: params[:direction] || (params[:order] ? nil : default_sorting_direction)
  )
  resources = order.apply(resources, dashboard)

  includes = dashboard.collection_includes
  resources = resources.includes(*includes) if includes.any?

  @resources = resources.page(params[:_page]).per(params[:per_page] || 25)
  @page = Terrazzo::Page::Collection.new(dashboard, resource_class, order: order)
  @search_term = params[:search]
  @active_filter = params[:filter]
  @filter_value = params[:filter_value]
end

#newObject



53
54
55
56
# File 'app/controllers/terrazzo/application_controller.rb', line 53

def new
  @resource = resource_class.new
  @page = Terrazzo::Page::Form.new(dashboard, @resource)
end

#showObject



45
46
47
48
49
50
51
# File 'app/controllers/terrazzo/application_controller.rb', line 45

def show
  @resource = find_resource(params[:id])
  @page = Terrazzo::Page::Show.new(
    dashboard, @resource,
    has_many_params: Terrazzo::HasManyPagination.extract(params, dashboard.has_many_attributes)
  )
end

#updateObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/terrazzo/application_controller.rb', line 77

def update
  @resource = find_resource(params[:id])

  rp = resource_params("update")
  assign_has_one_associations(@resource)

  if @resource.update(rp)
    redirect_to after_resource_updated_path(@resource),
      notice: t("terrazzo.controllers.update.success",
        resource_name: resource_name)
  else
    @page = Terrazzo::Page::Form.new(dashboard, @resource)
    render :edit, status: :unprocessable_entity
  end
end