Module: Administrate::ApplicationHelper

Defined in:
app/helpers/administrate/application_helper.rb

Constant Summary collapse

PLURAL_MANY_COUNT =
2.1

Instance Method Summary collapse

Instance Method Details

#application_titleObject



5
6
7
8
9
10
11
# File 'app/helpers/administrate/application_helper.rb', line 5

def application_title
  if Rails::VERSION::MAJOR <= 5
    Rails.application.class.parent_name.titlecase
  else
    Rails.application.class.module_parent_name.titlecase
  end
end

#clear_search_paramsObject



71
72
73
74
75
# File 'app/helpers/administrate/application_helper.rb', line 71

def clear_search_params
  params.except(:search, :page).permit(
    :per_page, resource_name => %i[order direction]
  )
end

#dashboard_from_resource(resource_name) ⇒ Object



37
38
39
# File 'app/helpers/administrate/application_helper.rb', line 37

def dashboard_from_resource(resource_name)
  "#{resource_name.to_s.singularize}_dashboard".classify.constantize
end

#display_resource_name(resource_name) ⇒ Object



41
42
43
44
45
46
# File 'app/helpers/administrate/application_helper.rb', line 41

def display_resource_name(resource_name)
  dashboard_from_resource(resource_name).resource_name(
    count: PLURAL_MANY_COUNT,
    default: default_resource_name(resource_name),
  )
end

#has_presence_validator?(resource_class, field_name) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
# File 'app/helpers/administrate/application_helper.rb', line 26

def has_presence_validator?(resource_class, field_name)
  validators_on(resource_class, field_name).
    any? { |v| v.class == ActiveRecord::Validations::PresenceValidator }
end

#render_field(field, locals = {}) ⇒ Object



13
14
15
16
# File 'app/helpers/administrate/application_helper.rb', line 13

def render_field(field, locals = {})
  locals[:field] = field
  render locals: locals, partial: field.to_partial_path
end

#required_field?(field) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'app/helpers/administrate/application_helper.rb', line 22

def required_field?(field)
  has_presence_validator?(field.resource.class, field.attribute)
end

#requireness(field) ⇒ Object



18
19
20
# File 'app/helpers/administrate/application_helper.rb', line 18

def requireness(field)
  required_field?(field) ? "required" : "optional"
end

#resource_index_route(resource_name) ⇒ Object



56
57
58
59
60
61
# File 'app/helpers/administrate/application_helper.rb', line 56

def resource_index_route(resource_name)
  url_for(
    action: "index",
    controller: "/#{namespace}/#{resource_name}",
  )
end

#sanitized_order_params(page, current_field_name) ⇒ Object



63
64
65
66
67
68
69
# File 'app/helpers/administrate/application_helper.rb', line 63

def sanitized_order_params(page, current_field_name)
  collection_names = page.item_includes + [current_field_name]
  association_params = collection_names.map do |assoc_name|
    { assoc_name => %i[order direction page per_page] }
  end
  params.permit(:search, :id, :page, :per_page, association_params)
end

#sort_order(order) ⇒ Object



48
49
50
51
52
53
54
# File 'app/helpers/administrate/application_helper.rb', line 48

def sort_order(order)
  case order
  when "asc" then "ascending"
  when "desc" then "descending"
  else "none"
  end
end

#validators_on(resource_class, field_name) ⇒ Object



31
32
33
34
35
# File 'app/helpers/administrate/application_helper.rb', line 31

def validators_on(resource_class, field_name)
  return [] unless resource_class.respond_to?(:validators_on)

  resource_class.validators_on(field_name)
end