Class: RubyUIAdmin::Fields::RecordLinkField

Inherits:
BaseField
  • Object
show all
Defined in:
lib/ruby_ui_admin/fields/record_link_field.rb

Overview

Renders a link to another record, resolved through a named resource:

field :detail, as: :record_link, use_resource: "FormGroup", only_on: :show

Instance Attribute Summary

Attributes inherited from BaseField

#block, #id, #options, #resource

Instance Method Summary collapse

Methods inherited from BaseField

#database_id, #default_value, #description, field_type, #fill, #filterable?, #formatted_value, #has_default?, #help, #initialize, #link_to_record?, #name, #permit_param, #permit_params, #permitted_param, #placeholder, #readonly?, register_as, #required?, #sort_lambda, #sortable?, #type, #value, #visible?, #visible_in_view?

Constructor Details

This class inherits a constructor from RubyUIAdmin::Fields::BaseField

Instance Method Details

#default_hidden_viewsObject



10
11
12
# File 'lib/ruby_ui_admin/fields/record_link_field.rb', line 10

def default_hidden_views
  %i[new edit]
end

#display_label(record) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/ruby_ui_admin/fields/record_link_field.rb', line 22

def display_label(record)
  return nil if record.nil?

  if record.respond_to?(:to_label) then record.to_label
  elsif record.respond_to?(:name) then record.name
  elsif record.respond_to?(:title) then record.title
  else "#{record.model_name.human} ##{record.id}"
  end
end

#fill_value(record, value) ⇒ Object



42
# File 'lib/ruby_ui_admin/fields/record_link_field.rb', line 42

def fill_value(record, value); end

#linked_record(record) ⇒ Object



18
19
20
# File 'lib/ruby_ui_admin/fields/record_link_field.rb', line 18

def linked_record(record)
  value(record)
end

#target_resource(linked = nil) ⇒ Object

The resource class used to build the link.



33
34
35
36
37
38
39
40
# File 'lib/ruby_ui_admin/fields/record_link_field.rb', line 33

def target_resource(linked = nil)
  if use_resource
    RubyUIAdmin.resource_manager.resources.find { |r| r.name.to_s.demodulize == use_resource.to_s } ||
      (Object.const_get("RubyUIAdmin::Resources::#{use_resource}") rescue nil)
  elsif linked
    RubyUIAdmin.resource_manager.find_for_model(linked.class)
  end
end

#use_resourceObject



14
15
16
# File 'lib/ruby_ui_admin/fields/record_link_field.rb', line 14

def use_resource
  options[:use_resource]
end