# Question re routes.rb, and issue with redirected URL coming

**URL:** <https://www.ruby-forum.com/t/question-re-routes-rb-and-issue-with-redirected-url-coming/68936>\
**Category:** Rails\
**Created:** [September 17, 2006, 2:35am UTC](https://www.ruby-forum.com/t/question-re-routes-rb-and-issue-with-redirected-url-coming/68936 "2006-09-17T02:35:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [September 17, 2006, 2:35am UTC](https://www.ruby-forum.com/t/question-re-routes-rb-and-issue-with-redirected-url-coming/68936/1 "2006-09-17T02:35:16Z")

</div>

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](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](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](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](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

---

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [September 17, 2006, 2:35pm UTC](https://www.ruby-forum.com/t/question-re-routes-rb-and-issue-with-redirected-url-coming/68936/2 "2006-09-17T14:35:49Z")

</div>

PS. ummm…can ones routes.rb can contain more than one mapping with  
the  
same number of parameters or not? i.e. if it did how would rails know  
how  
to back calculate a url\_for or a redirect\_to request? Wonder if this  
would  
explain my problem? I have the following lines in my routes.rb that  
both  
have 4 parameters:  
…  
map.connect ‘:controller/:action/:sort/:order’  
map.connect ‘:locale/:controller/:action/:permalink’  
…

---

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [September 18, 2006, 9:43am UTC](https://www.ruby-forum.com/t/question-re-routes-rb-and-issue-with-redirected-url-coming/68936/3 "2006-09-18T09:43:13Z")

</div>

Can anyone provide an overview of the business logic behind the  
“url\_for”  
functionality in relation to how it works given there may be many routes  
specified in ones “routes.rb” file? How does it determine which mapping  
to  
use & rules behind populating the URL?  
I stated to look at the rails code around started getting a headache ☹  
(still not quite up to this level in ruby/rails)
