From b0248e7d526e19363395f02c0082ebb4c68082ac Mon Sep 17 00:00:00 2001 From: Curtis Edmond Date: Thu, 27 May 2010 11:51:05 -0600 Subject: [PATCH] allow current_page? to work properly for namespace controllers --- actionpack/lib/action_view/helpers/url_helper.rb | 5 ++ actionpack/test/template/url_helper_test.rb | 62 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 0 deletions(-) diff --git a/actionpack/lib/action_view/helpers/url_helper.rb b/actionpack/lib/action_view/helpers/url_helper.rb index 210f148..720b4b9 100644 --- a/actionpack/lib/action_view/helpers/url_helper.rb +++ b/actionpack/lib/action_view/helpers/url_helper.rb @@ -572,6 +572,11 @@ module ActionView "page unless your view context provides a Request object " \ "in a #request method" end + + if controller && options[:controller] + return false if controller.controller_path != options[:controller] + end + url_string = CGI.unescapeHTML(url_for(options)) diff --git a/actionpack/test/template/url_helper_test.rb b/actionpack/test/template/url_helper_test.rb index 299d6dd..5bd7249 100644 --- a/actionpack/test/template/url_helper_test.rb +++ b/actionpack/test/template/url_helper_test.rb @@ -636,3 +636,65 @@ class PolymorphicControllerTest < ActionController::TestCase assert_equal "/workshops/1/sessions/1\nSession", @response.body end end + +class EventsController < ActionController::Base + test_routes do + resources :events + + namespace :admin do + resources :events + end + end + + def index + render :inline => "events index <%= current_page?(:controller => 'events', :action => 'index') %>" + end + + def new + render :inline => "new event <%= current_page?(:controller => 'admin/events', :action => 'new') %>" + end + +end + +class Admin::MeetingsController < ActionController::Base + test_routes do + namespace :admin do + resources :meetings + end + end + + def index + render :inline => "meetings index <%= current_page?(:controller => 'meetings', :action => 'index') %>" + end + + def new + render :inline => "new meeting <%= current_page?(:controller => 'admin/meetings', :action => 'new') %>" + end +end + +class NameSpacedControllerTest < ActionController::TestCase + def test_current_page_with_non_namespaced_controller + @controller = EventsController.new + get :index + assert_equal 'events index true', @response.body + end + + def test_current_page_with_namespaced_controller_name_for_non_namespaced_controller + @controller = EventsController.new + get :new + assert_equal 'new event false', @response.body + end + + def test_current_page_with_nonnamespaced_controller_name_for_namespaced_controller + @controller = Admin::MeetingsController.new + get :index + assert_equal 'meetings index false', @response.body + end + + def test_current_page_with_namespaced_controller_name_for_namespaced_controller + @controller = Admin::MeetingsController.new + get :new + assert_equal 'new meeting true', @response.body + end + +end \ No newline at end of file -- 1.6.4.2