Skip to content

Commit b10c1c8

Browse files
authored
Merge pull request rails#49091 from euglena1215/prevent-nomethod-error-extract-value
Prevent `NoMethodError` in extract_value when specifying non-existent keys
2 parents c62a361 + 9d2a7f8 commit b10c1c8

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

actionpack/lib/action_controller/metal/strong_parameters.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -931,8 +931,9 @@ def deep_dup
931931
# params = ActionController::Parameters.new(id: "1_123", tags: "ruby,rails")
932932
# params.extract_value(:id) # => ["1", "123"]
933933
# params.extract_value(:tags, delimiter: ",") # => ["ruby", "rails"]
934+
# params.extract_value(:non_existent_key) # => nil
934935
def extract_value(key, delimiter: "_")
935-
@parameters[key].split(delimiter)
936+
@parameters[key]&.split(delimiter)
936937
end
937938

938939
protected

actionpack/test/controller/parameters/accessors_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,5 +430,6 @@ class ParametersAccessorsTest < ActiveSupport::TestCase
430430

431431
assert_equal(["1", "123"], params.extract_value(:id))
432432
assert_equal(["ruby", "rails", "web"], params.extract_value(:tags, delimiter: ","))
433+
assert_nil(params.extract_value(:non_existent_key))
433434
end
434435
end

0 commit comments

Comments
 (0)