diff --git a/lib/stimulus_reflex/reflex_data.rb b/lib/stimulus_reflex/reflex_data.rb index f8b3af20..acd7e676 100644 --- a/lib/stimulus_reflex/reflex_data.rb +++ b/lib/stimulus_reflex/reflex_data.rb @@ -52,7 +52,7 @@ def form_data end def params - form_params.merge(url_params) + form_params.deep_merge(url_params) end def form_params diff --git a/test/reflex_data_test.rb b/test/reflex_data_test.rb new file mode 100644 index 00000000..7aa93bcb --- /dev/null +++ b/test/reflex_data_test.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require_relative "test_helper" + +class StimulusReflex::ReflexDataTest < ActiveSupport::TestCase + reflex_data = StimulusReflex::ReflexData.new({ + "params" => { + "user" => {"email" => "test@example.com"} + }, + "url" => "http://example.com/?user[context]=regular" + }) + + test "accessing form_params keeps url_params with the same keys" do + assert_equal "regular", reflex_data.params["user"]["context"] + assert_equal "test@example.com", reflex_data.params["user"]["email"] + end +end