Module: Decidim::Admin::AttributesDisplayHelper
- Defined in:
- decidim-admin/app/helpers/decidim/admin/attributes_display_helper.rb
Overview
Custom helpers, scoped to the admin panel.
Instance Method Summary collapse
-
#display_for(record, *attrs) ⇒ Object
Displays the given attributes list in a list.
-
#display_label(record, attr, locale = nil) ⇒ Object
Holds the logic to render a label for a given attribute.
Instance Method Details
#display_for(record, *attrs) ⇒ Object
Displays the given attributes list in a list. This is a simple
show_for alternative, so there is no way to modify how an attribute is
shown and there is no intention on adding this. It is intended to be
used inside a dl HTML tag, so you can customize how a specific
attribute has to be shown directly:
-
<%= display_for @post, :title, :body %>
- Comments number
- 2
This will render this HTML:
- Title
- Hello, world!
- Body
- Lorem ipsum dolor sit amet...
- Comments number
- 2
record - any Ruby object that needs some attributes rendered
attrs - a list of N attributes of the record.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'decidim-admin/app/helpers/decidim/admin/attributes_display_helper.rb', line 33 def display_for(record, *attrs) attrs.map do |attr| if attr.is_a?(Hash) attribute_name = attr.keys.first label = attr.values.first else label = attribute_name = attr end if record.column_for_attribute(attribute_name).type == :jsonb display_available_locales(record).map do |locale| display_label(record, label, locale) + display_value(record, attribute_name, locale) end.reduce(:+) else display_label(record, label) + display_value(record, attribute_name) end end.reduce(:+) end |
#display_label(record, attr, locale = nil) ⇒ Object
Holds the logic to render a label for a given attribute.
53 54 55 56 57 |
# File 'decidim-admin/app/helpers/decidim/admin/attributes_display_helper.rb', line 53 def display_label(record, attr, locale = nil) return content_tag(:dt, record.class.human_attribute_name(attr)) unless locale content_tag(:dt, record.class.human_attribute_name(attr) + " (#{locale})") end |