提交 fddf7ea1 编写于 作者: A Alexey Vakhov

current_page? returns false for non-GET requests

上级 6f3c6992
...@@ -569,6 +569,12 @@ def mail_to(email_address, name = nil, html_options = {}) ...@@ -569,6 +569,12 @@ def mail_to(email_address, name = nil, html_options = {})
# #
# current_page?(:controller => 'library', :action => 'checkout') # current_page?(:controller => 'library', :action => 'checkout')
# # => false # # => false
#
# Let's say we're in the <tt>/products</tt> action with method POST in case of invalid product.
#
# current_page?(:controller => 'product', :action => 'index')
# # => false
#
def current_page?(options) def current_page?(options)
unless request unless request
raise "You cannot use helpers that need to determine the current " \ raise "You cannot use helpers that need to determine the current " \
...@@ -576,6 +582,8 @@ def current_page?(options) ...@@ -576,6 +582,8 @@ def current_page?(options)
"in a #request method" "in a #request method"
end end
return false unless request.get?
url_string = url_for(options) url_string = url_for(options)
# We ignore any extra parameters in the request_uri if the # We ignore any extra parameters in the request_uri if the
......
...@@ -304,8 +304,8 @@ def test_link_to_if ...@@ -304,8 +304,8 @@ def test_link_to_if
assert_equal "Showing", link_to_if(false, "Showing", url_hash) assert_equal "Showing", link_to_if(false, "Showing", url_hash)
end end
def request_for_url(url) def request_for_url(url, opts = {})
env = Rack::MockRequest.env_for("http://www.example.com#{url}") env = Rack::MockRequest.env_for("http://www.example.com#{url}", opts)
ActionDispatch::Request.new(env) ActionDispatch::Request.new(env)
end end
...@@ -329,6 +329,12 @@ def test_current_page_with_params_that_match ...@@ -329,6 +329,12 @@ def test_current_page_with_params_that_match
assert current_page?("http://www.example.com/?order=desc&page=1") assert current_page?("http://www.example.com/?order=desc&page=1")
end end
def test_current_page_with_not_get_verb
@request = request_for_url("/events", :method => :post)
assert !current_page?('/events')
end
def test_link_unless_current def test_link_unless_current
@request = request_for_url("/") @request = request_for_url("/")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册