Hi,
I seem to be getting a routing error due to a before filter I have puut in application.rb that assists with localization. The before_filter is checking the locale and in this case is performing a redirect. The parameters look ok just as the redirect request is set off in the before_filter, BUT THEN the URL that comes back from the client is WRONG with double entries ( e.g. “/active_rbac/active_rbac/login/login”)
Any advice on how to fault find this?
Could this be the way rails determines what the URL should be for a request. Does it back-calculate from routes.rb information? Perhaps I’ve got inconsistent data in my routes.rb file (e.g. more than one map with same number of parameters). I’ll copy my routes.rb below.
Tks Greg
=============== HTML BROWSER ERROR ===============================================
Routing Error Recognition failed for “/active_rbac/active_rbac/login/login”
========= APPLICATION.RB, before_filter =========================================== before_filter :set_locale def set_locale
puts "application.rb: params[:locale]=#{params[:locale]}"
default_locale = 'en'
@locale = params[:locale] || session[:locale] || default_locale
session[:locale] = @locale
begin
Localization.lang = @locale
puts "application.rb - set locale to #{@locale}"
redirect_to params.merge( 'locale' => Localization.lang ) and return false if params[:locale].nil? <== REDIRECTS HERE
rescue
Localization.lang = default_locale
redirect_to params.merge( 'locale' => Localization.lang ) and return false
end
end
=============CONSOLE - puts ==============================================================
application.rb - params = actionlogincontrolleractive_rbac/login application.rb - set locale to en - params merged = actionlogincontrolleractive_rbac/loginlocaleen - urlfor = 127.0.0.1 - - [17/Sep/2006:10:20:57 E. Australia Standard Time] “GET /login HTTP/1.1” 302 133 http://localhost:3000/?locale=en → /login 127.0.0.1 - - [17/Sep/2006:10:20:58 E. Australia Standard Time] “GET /active_rbac/active_rbac/login/login?locale=en HTTP/1.1” 404 624 http://localhost:3000/?locale=en → /active_rbac/active_rbac/login/login?locale=en
=============LOG FILE======================================= Processing LoginController#login (for 127.0.0.1 at 2006-09-17 10:20:58) [GET]
Session ID: c04aec03211733ac75632f0834b14a53 Parameters: {“action”=>“login”, “controller”=>“active_rbac/login”} Redirected to http://localhost:3000/active_rbac/active_rbac/login/login?locale=en Filter chain halted as [set_locale] returned false Completed in 0.00010 (10000 reqs/sec) | DB: 0.00000 (0%) | 302 Found [ http://localhost/login] ActiveRbac::ComponentController: missing default helper path active_rbac/component_helper ActiveRbac::LoginController: missing default helper path active_rbac/login_helper
Processing Base#index (for 127.0.0.1 at 2006-09-17 10:20:58) [GET] Session ID: c04aec03211733ac75632f0834b14a53 Parameters: {“locale”=>“en”}
ActionController::RoutingError (Recognition failed for “/active_rbac/active_rbac/login/login”):
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:522:in `recognition_failed'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:512:in `recognize!'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in `dispatch'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick_server.rb:115:in `handle_dispatch'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-
1.1.6/lib/webrick_server.rb:81:in service' C:/InstantRails/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in
service’
C:/InstantRails/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in run' C:/InstantRails/ruby/lib/ruby/1.8/webrick/server.rb:173:in
start_thread’
C:/InstantRails/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
C:/InstantRails/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
C:/InstantRails/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
C:/InstantRails/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
C:/InstantRails/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick_server.rb:67:in `dispatch'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/servers/webrick.rb:59
C:/InstantRails/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-
1.3.1/lib/active_support/dependencies.rb:147:in require' C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/server.rb:30 C:/InstantRails/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in
require’
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in `require'
./script/server:3
-e:4
Rendering C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack- 1.12.5/lib/action_controller/templates/rescues/layout.rhtml (404 Page Not Found)
=====================routes.rb================================= ActionController::Routing::Routes.draw do |map| map.connect ‘/admin/group/:action/:id’, :controller => ‘active_rbac/group’ map.connect ‘/admin/role/:action/:id’, :controller => ‘active_rbac/role’ map.connect ‘/admin/static_permission/:action/:id’,
:controller => 'active_rbac/static_permission'
map.connect '/admin/user/:action/:id',
:controller => 'active_rbac/user'
map.connect '/login', :controller => 'active_rbac/login',
:action => 'login'
map.connect '/logout', :controller => 'active_rbac/login',
:action => 'logout'
map.connect '/register/confirm/:user/:token',
:controller => 'active_rbac/registration',
:action => 'confirm'
map.connect '/register/:action/:id',
:controller => 'active_rbac/registration'
map.connect '', :controller => "splash"
map.connect
‘:controller/:action/:sort/:order’ map.connect ‘:locale/:controller/:action/:permalink’ map.connect ‘:controller/:action/:id’
end