instance method
current_page?
Ruby on Rails 7.1.6
Since v2.2.3Signature
current_page?(options = nil, check_parameters: false, **options_as_kwargs)
True if the current request URI was generated by the given options.
Examples
Let’s say we’re in the http://www.example.com/shop/checkout?order=desc&page=1 action.
current_page?(action: 'process') # => false current_page?(action: 'checkout') # => true current_page?(controller: 'library', action: 'checkout') # => false current_page?(controller: 'shop', action: 'checkout') # => true current_page?(controller: 'shop', action: 'checkout', order: 'asc') # => false current_page?(controller: 'shop', action: 'checkout', order: 'desc', page: '1') # => true current_page?(controller: 'shop', action: 'checkout', order: 'desc', page: '2') # => false current_page?('http://www.example.com/shop/checkout') # => true current_page?('http://www.example.com/shop/checkout', check_parameters: true) # => false current_page?('/shop/checkout') # => true current_page?('http://www.example.com/shop/checkout?order=desc&page=1') # => true
Let’s say we’re in the http://www.example.com/products action with method POST in case of invalid product.
current_page?(controller: 'product', action: 'index') # => false
We can also pass in the symbol arguments instead of strings.
Parameters
-
optionsopt = nil -
check_parameterskey = false -
options_as_kwargskeyrest
Source
# File actionview/lib/action_view/helpers/url_helper.rb, line 611
def current_page?(options = nil, check_parameters: false, **options_as_kwargs)
unless request
raise "You cannot use helpers that need to determine the current " \
"page unless your view context provides a Request object " \
"in a #request method"
end
return false unless request.get? || request.head?
options ||= options_as_kwargs
check_parameters ||= options.is_a?(Hash) && options.delete(:check_parameters)
url_string = RFC2396_PARSER.unescape(url_for(options)).force_encoding(Encoding::BINARY)
# We ignore any extra parameters in the request_uri if the
# submitted URL doesn't have any either. This lets the function
# work with things like ?order=asc
# the behavior can be disabled with check_parameters: true
request_uri = url_string.index("?") || check_parameters ? request.fullpath : request.path
request_uri = RFC2396_PARSER.unescape(request_uri).force_encoding(Encoding::BINARY)
if %r{^\w+://}.match?(url_string)
request_uri = +"#{request.protocol}#{request.host_with_port}#{request_uri}"
end
remove_trailing_slash!(url_string)
remove_trailing_slash!(request_uri)
url_string == request_uri
end
Defined in actionview/lib/action_view/helpers/url_helper.rb line 611
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionView::Helpers::UrlHelper