lib/stimulus_reflex/reflex.rb in stimulus_reflex-3.5.0.pre2 vs lib/stimulus_reflex/reflex.rb in stimulus_reflex-3.5.0.pre3

- old
+ new

@@ -6,18 +6,18 @@ include ActiveSupport::Rescuable include StimulusReflex::Callbacks include ActionView::Helpers::TagHelper include CableReady::Identifiable - attr_accessor :payload + attr_accessor :payload, :headers attr_reader :cable_ready, :channel, :url, :element, :selectors, :method_name, :broadcaster, :client_attributes, :logger alias_method :action_name, :method_name # for compatibility with controller libraries like Pundit that expect an action name delegate :connection, :stream_name, to: :channel delegate :controller_class, :flash, :session, to: :request - delegate :broadcast, :broadcast_message, to: :broadcaster + delegate :broadcast, :halted, :error, to: :broadcaster delegate :reflex_id, :tab_id, :reflex_controller, :xpath_controller, :xpath_element, :permanent_attribute_name, to: :client_attributes def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {}) if is_a? CableReady::Broadcaster message = <<~MSG @@ -39,10 +39,11 @@ @broadcaster = StimulusReflex::PageBroadcaster.new(self) @logger = StimulusReflex::Logger.new(self) @client_attributes = ClientAttributes.new(client_attributes) @cable_ready = StimulusReflex::CableReadyChannels.new(stream_name, reflex_id) @payload = {} + @headers = {} self.params end def request @request ||= begin @@ -95,10 +96,11 @@ end end def controller @controller ||= controller_class.new.tap do |c| + request.headers.merge!(headers) c.instance_variable_set :@stimulus_reflex, true c.set_request! request c.set_response! controller_class.make_response!(request) end @@ -109,9 +111,12 @@ def controller? !!defined? @controller end def render(*args) + options = args.extract_options! + (options[:locals] ||= {}).reverse_merge!(params: params) + args << options.reverse_merge(layout: false) controller_class.renderer.new(connection.env.merge("SCRIPT_NAME" => "")).render(*args) end # Invoke the reflex action specified by `name` and run all callbacks def process(name, *args)