views:

37

answers:

3

I want to know if an arbitrary path can be mapped to a route

recognized_request_for accomplishes what I want, but I can't get it to work in my controller.

Specifically, how can I execute recognized_request_for or something that accomplishes the same task from my controller?

A: 

You could possibly dynamically generate the route helper method and see if it exists (using respond_to? or even just catching any thrown exception).

Toby Hede
yeah, I don't really know what that means :)
Christopher
A: 

If you want to connect an arbitrary path the a controller and and action, you can use map.connect

map.connect '/any/random/string/of/stuff', :controller => 'items', :action => 'new'

You can even call out embedded param designations in the path:

map.connect '/seeking/room/for/[:number_of_nights]/nights', :controller => 'rooms', :action => 'index'

with the above you will receive the value represented in the url as part of the params hash in the controller.

austinfromboston
A: 

SOLUTION:

@related_page_path = '/' + @page.path
begin
  ActionController::Routing::Routes.recognize_path(@related_page_path, :method => :get)
rescue
  @related_page_path = nil
end
Christopher
This begin-rescue block is really odd looking..
Fabiano PS