Module: InertiaRails::Controller::ClassMethods

Defined in:
lib/inertia_rails/controller.rb

Instance Method Summary collapse

Instance Method Details

#_inertia_configurationObject



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

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

#inertia_config(**attrs) ⇒ Object



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

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



24
25
26
27
28
29
30
31
32
33
# File 'lib/inertia_rails/controller.rb', line 24

def inertia_share(hash = nil, **props, &block)
  options = props.slice(:if, :unless, :only, :except)
  data = hash || props.except(:if, :unless, :only, :except)

  before_action(**options) do
    @_inertia_shared ||= []
    @_inertia_shared << data.freeze if data.any?
    @_inertia_shared << block if block
  end
end

#use_inertia_instance_propsObject



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

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