class Manage::Fields::Reader
Public Class Methods
field_title(resource_class, field_data, prefix='')
click to toggle source
# File lib/manage/fields/reader.rb, line 20 def field_title(resource_class, field_data, prefix='') current_field, rest_field_parts = _parse_field_data(field_data) title = resource_class.human_attribute_name(current_field) rest_field_parts.empty? ? prefix + title : field_title(resource_class, rest_field_parts.join('.'), prefix + title + ' ') end
field_value(scope, field_data)
click to toggle source
# File lib/manage/fields/reader.rb, line 5 def field_value(scope, field_data) current_field, rest_field_parts, custom_query, custom_format = _parse_field_data(field_data) value = scope.respond_to?(current_field) ? scope.public_send(current_field) : "missing index field '#{current_field}'" if _is_field_relation?(value) value = custom_query.present? ? custom_query.call(value) : value value.map do |entity| ("<a href=\"#{current_field}/#{entity.id}\">#{custom_format.present? ? custom_format.call(entity) : entity.id }</a>") end.join(', ').html_safe else rest_field_parts.empty? ? value : field_value(value, rest_field_parts.join('.')) end end
Private Class Methods
_is_field_relation?(field_value)
click to toggle source
# File lib/manage/fields/reader.rb, line 28 def _is_field_relation?(field_value) field_value.is_a?(ActiveRecord::Associations::CollectionProxy) end
_parse_field_data(field_data)
click to toggle source
# File lib/manage/fields/reader.rb, line 32 def _parse_field_data(field_data) custom_query = nil custom_format = nil if field_data.is_a?(Hash) current_field = field_data.keys.first rest_field_parts = field_data[current_field] if rest_field_parts.is_a?(String) rest_field_parts = Array(rest_field_parts) else custom_query = field_data[current_field][:query] custom_format = field_data[current_field][:format] rest_field_parts = [] end else current_field, *rest_field_parts = field_data.to_s.split('.') end return current_field, rest_field_parts, custom_query, custom_format end