Greg Hauptmann
2006-Sep-17 00:31 UTC
question re routes.rb, and issue with redirected URL coming back with double entries???
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
========================================================
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---
Greg Hauptmann
2006-Sep-17 12:30 UTC
Re: question re routes.rb, and issue with redirected URL coming back with double entries???
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''
.........
On 9/17/06, Greg Hauptmann
<greg.hauptmann.ruby-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:>
> 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
> ========================================================>
>
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---
Greg Hauptmann
2006-Sep-18 07:38 UTC
Re: question re routes.rb, and issue with redirected URL coming back with double entries???
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) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---