Method: URI#query_param

Defined in:
lib/grubby/core_ext/uri.rb

#query_param(name) ⇒ String, ...

Returns the value of the specified query param in the URI’s query string. The specified name must be exactly as it appears in the query string, and support for complex nested values is limited. (See CGI.parse for parsing behavior.) If name contains “[]”, all occurrences of the query param are returned as an Array. Otherwise, only the last occurrence is returned.

Examples:

URI("https://example.com/?foo=a").query_param("foo")  # == "a"

URI("https://example.com/?foo=a&foo=b").query_param("foo")    # == "b"
URI("https://example.com/?foo=a&foo=b").query_param("foo[]")  # == nil

URI("https://example.com/?foo[]=a&foo[]=b").query_param("foo")    # == nil
URI("https://example.com/?foo[]=a&foo[]=b").query_param("foo[]")  # == ["a", "b"]

URI("https://example.com/?foo[][x]=a&foo[][y]=b").query_param("foo[]")     # == nil
URI("https://example.com/?foo[][x]=a&foo[][y]=b").query_param("foo[][x]")  # == ["a"]

Parameters:

Returns:



36
37
38
39
# File 'lib/grubby/core_ext/uri.rb', line 36

def query_param(name)
  values = CGI.parse(self.query)[name] if self.query
  (values.nil? || name.include?("[]")) ? values : values.last
end