Module: InertiaRails::Controller::ClassMethods

Defined in:
lib/inertia_rails/controller.rb

Instance Method Summary collapse

Instance Method Details

#_inertia_configurationObject



51
52
53
54
55
56
# File 'lib/inertia_rails/controller.rb', line 51

def _inertia_configuration
  @_inertia_configuration ||= begin
    config = superclass.try(:_inertia_configuration) || ::InertiaRails.configuration
    @inertia_config&.with_defaults(config) || config
  end
end

#_inertia_shared_dataObject



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/inertia_rails/controller.rb', line 58

def _inertia_shared_data
  @_inertia_shared_data ||= begin
    shared_data = superclass.try(:_inertia_shared_data)

    if @inertia_share && shared_data.present?
      shared_data + @inertia_share.freeze
    else
      @inertia_share || shared_data || []
    end.freeze
  end
end

#inertia_config(**attrs) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/inertia_rails/controller.rb', line 34

def inertia_config(**attrs)
  config = InertiaRails::Configuration.new(**attrs)

  if @inertia_config
    @inertia_config.merge!(config)
  else
    @inertia_config = config
  end
end

#inertia_share(hash = nil, **props, &block) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/inertia_rails/controller.rb', line 19

def inertia_share(hash = nil, **props, &block)
  options = extract_inertia_share_options(props)
  return push_to_inertia_share(**(hash || props), &block) if options.empty?

  push_to_inertia_share do
    next unless options[:if].all? { |filter| instance_exec(&filter) } if options[:if]
    next unless options[:unless].none? { |filter| instance_exec(&filter)  } if options[:unless]

    next hash unless block

    res = instance_exec(&block)
    hash ? hash.merge(res) : res
  end
end

#use_inertia_instance_propsObject



44
45
46
47
48
49
# File 'lib/inertia_rails/controller.rb', line 44

def use_inertia_instance_props
  before_action do
    @_inertia_instance_props = true
    @_inertia_skip_props = view_assigns.keys + ['_inertia_skip_props']
  end
end