Class: Airview::ResourcesController

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

Instance Method Summary collapse

Instance Method Details

#createObject



30
31
32
33
34
35
36
37
38
# File 'app/controllers/airview/resources_controller.rb', line 30

def create
  record = @resource.model_class.new(record_attributes)

  if record.save
    redirect_to resource_path(@resource.key), notice: "Record created"
  else
    redirect_to resource_path(@resource.key), alert: record.errors.full_messages.to_sentence
  end
end

#destroyObject



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

def destroy
  record = @resource.model_class.find(params[:id])
  record.destroy!
  redirect_to safe_return_path || resource_path(@resource.key), notice: "Record deleted"
end

#indexObject



7
8
9
10
11
12
13
14
# File 'app/controllers/airview/resources_controller.rb', line 7

def index
  @resources = Airview.resources.values
  if @resources.any?
    redirect_to resource_path(@resources.first.key)
  else
    redirect_to setup_path
  end
end

#referencesObject

Raises:

  • (ActionController::RoutingError)


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

def references
  field = @resource.field!(params[:field])
  raise ActionController::RoutingError, "Not Found" unless field.association?

  scope = field.model_class.all
  term = params[:q].to_s.strip
  scope = filter_reference_scope(scope, field, term) if term.present?

  render json: scope.limit(20).map { |record| reference_payload(record, field) }
end

#showObject



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/controllers/airview/resources_controller.rb', line 16

def show
  @resources = Airview.resources.values
  @views = View.for_resource(@resource.key).ordered
  @active_view = @views.find { |view| view.id.to_s == params[:view_id].to_s }
  @sorted_fields = @resource.fields.values.sort_by { |field| field.label.downcase }
  @visible_fields = visible_fields
  @filter_conditions = filter_conditions
  @query = Query.new(@resource, query_params.merge(filters: @filter_conditions))
  @records = @query.records
  @record = @resource.model_class.new
  @expanded_record = expanded_record
  @delete_record = delete_record
end

#updateObject



40
41
42
43
44
45
46
47
48
# File 'app/controllers/airview/resources_controller.rb', line 40

def update
  record = @resource.model_class.find(params[:id])

  if record.update(record_attributes)
    redirect_back fallback_location: resource_path(@resource.key), notice: "Record updated"
  else
    redirect_back fallback_location: resource_path(@resource.key), alert: record.errors.full_messages.to_sentence
  end
end