Module: Alchemy::ResourcesHelper
- Included in:
- Admin::ResourcesController
- Defined in:
- lib/alchemy/resources_helper.rb
Instance Method Summary collapse
-
#contains_relations? ⇒ Boolean
Returns true if the resource contains any relations.
- #edit_resource_path(resource = nil, options = {}) ⇒ Object
- #new_resource_path(options = {}) ⇒ Object
-
#render_attribute(resource, attribute, options = {}) ⇒ String
Returns the value from resource attribute.
-
#resource_attribute_field_options(attribute) ⇒ Object
Returns a options hash for simple_form input fields.
- #resource_instance_variable ⇒ Object
- #resource_model ⇒ Object
- #resource_name ⇒ Object
- #resource_path(resource = resource_handler.resource_name, options = {}) ⇒ Object
-
#resource_relations_names ⇒ Object
Returns an array of all resource_relations names.
- #resource_scope ⇒ Object
- #resource_url_proxy ⇒ Object
-
#resource_window_size ⇒ Object
Alchemy::ResourceHelper.
-
#resources_header ⇒ Object
Renders the human model name with a count as h1 header.
- #resources_instance_variable ⇒ Object
- #resources_path(resource_or_name = resource_handler.resources_name, options = {}) ⇒ Object
-
#sortable_resource_header_column(attribute) ⇒ Object
Returns the attribute’s column for sorting.
Instance Method Details
#contains_relations? ⇒ Boolean
Returns true if the resource contains any relations
113 114 115 |
# File 'lib/alchemy/resources_helper.rb', line 113 def contains_relations? resource_handler.resource_relations.present? end |
#edit_resource_path(resource = nil, options = {}) ⇒ Object
46 47 48 49 |
# File 'lib/alchemy/resources_helper.rb', line 46 def edit_resource_path(resource=nil, ={}) path_segments = (resource_scope + [resource] or resource_handler.resource_array) edit_polymorphic_path path_segments, end |
#new_resource_path(options = {}) ⇒ Object
42 43 44 |
# File 'lib/alchemy/resources_helper.rb', line 42 def new_resource_path(={}) new_polymorphic_path (resource_scope + [resource_handler.resource_name]), end |
#render_attribute(resource, attribute, options = {}) ⇒ String
Returns the value from resource attribute
If the attribute has a relation, the related object’s attribute value will be returned.
The output will be truncated after 50 chars.
71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/alchemy/resources_helper.rb', line 71 def render_attribute(resource, attribute, ={}) .reverse_merge!(truncate: 50) value = resource.send(attribute[:name]) if (relation = attribute[:relation]) && value.present? record = relation[:model_association].klass.find(value) value = record.send(relation[:attr_method]) elsif attribute[:type] == :datetime && value.present? value = l(value) end value.to_s.truncate([:truncate]) rescue ActiveRecord::RecordNotFound => e warning e _t(:not_found) end |
#resource_attribute_field_options(attribute) ⇒ Object
Returns a options hash for simple_form input fields.
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/alchemy/resources_helper.rb', line 87 def (attribute) = {hint: resource_handler.help_text_for(attribute)} case attribute[:type].to_s when 'boolean' when 'date', 'datetime' .merge as: 'string', input_html: { type: 'date', value: l(resource_instance_variable.send(attribute[:name]) || Time.now, format: :datepicker) } when 'time' .merge(as: 'time') when 'text' .merge(as: 'text', input_html: {rows: 4}) else .merge(as: 'string') end end |
#resource_instance_variable ⇒ Object
14 15 16 |
# File 'lib/alchemy/resources_helper.rb', line 14 def resource_instance_variable instance_variable_get("@#{resource_handler.resource_name}") end |
#resource_model ⇒ Object
55 56 57 |
# File 'lib/alchemy/resources_helper.rb', line 55 def resource_model resource_handler.model end |
#resource_name ⇒ Object
51 52 53 |
# File 'lib/alchemy/resources_helper.rb', line 51 def resource_name resource_handler.resource_name end |
#resource_path(resource = resource_handler.resource_name, options = {}) ⇒ Object
38 39 40 |
# File 'lib/alchemy/resources_helper.rb', line 38 def resource_path(resource=resource_handler.resource_name, ={}) resources_path(resource, ) end |
#resource_relations_names ⇒ Object
Returns an array of all resource_relations names
118 119 120 |
# File 'lib/alchemy/resources_helper.rb', line 118 def resource_relations_names resource_handler.resource_relations.collect { |k, v| v[:name].to_sym } end |
#resource_scope ⇒ Object
30 31 32 |
# File 'lib/alchemy/resources_helper.rb', line 30 def resource_scope @_resource_scope ||= [resource_url_proxy].concat(resource_handler.namespace_for_scope) end |
#resource_url_proxy ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/alchemy/resources_helper.rb', line 22 def resource_url_proxy if resource_handler.in_engine? eval(resource_handler.engine_name) else main_app end end |
#resource_window_size ⇒ Object
Alchemy::ResourceHelper
Used to DRY up resource like structures in Alchemy’s admin backend in combination with Alchemy::Resource
See Alchemy::Resource for examples how to initialize a resource_handler
10 11 12 |
# File 'lib/alchemy/resources_helper.rb', line 10 def resource_window_size @resource_window_size ||= "420x#{100 + resource_handler.attributes.length * 40}" end |
#resources_header ⇒ Object
Renders the human model name with a count as h1 header
108 109 110 |
# File 'lib/alchemy/resources_helper.rb', line 108 def resources_header content_tag :h1, "#{resources_instance_variable.total_count} #{resource_model.model_name.human(count: resources_instance_variable.total_count)}", class: 'resources-header' end |
#resources_instance_variable ⇒ Object
18 19 20 |
# File 'lib/alchemy/resources_helper.rb', line 18 def resources_instance_variable instance_variable_get("@#{resource_handler.resources_name}") end |
#resources_path(resource_or_name = resource_handler.resources_name, options = {}) ⇒ Object
34 35 36 |
# File 'lib/alchemy/resources_helper.rb', line 34 def resources_path(resource_or_name=resource_handler.resources_name, ={}) polymorphic_path (resource_scope + [resource_or_name]), end |
#sortable_resource_header_column(attribute) ⇒ Object
Returns the attribute’s column for sorting
If the attribute contains a resource_relation, then the table and column for related model will be returned.
126 127 128 129 130 131 132 |
# File 'lib/alchemy/resources_helper.rb', line 126 def sortable_resource_header_column(attribute) if relation = attribute[:relation] "#{relation[:model_association].table_name}.#{relation[:attr_method]}" else attribute[:name] end end |