Hello all,
I’ve two limitations in rails routes for which I don’t find a solution.
-
how to distinguish /hello/ from /hello ?
Rails routes seem not use nor validate the trailing slash. routes
‘hello’ and ‘hello/’ both validates urls ‘/hello’ and ‘/hello/’ -
how to have a dynamic ‘internal’ part in the url ?
I would like to match everithing like %r{/.ht} so that the following
routes are catch : /.htaccess /.htusers
/hello/foo/barunlimited/number/of/path/.htaccess
(I know that apache is already forbidding this ones, it is only an
example)
Rails routes let me write ‘:special_with_regexp/*path_info’ but not
‘*path_info/:special_with_regexp’. Is there a way to do that ?
It seems I can’t even do a regexp requirement on the *path_info to check
all this by hand (at least I didn’t manage to do it).
From what I see rails routes as pretty limited. Is there a way to
resolve my two needs ? If not, is there at least a (simple) way to take
hand on routes to do ‘by hands regexp’ on the full url ?
It seems that rails routes are more restricted and not very simpliers
than plain regexp for my personnal needs.
And … maybe two ideas for feature request :
-
It would be cool if a could chain some routes. Say that “ok, url
begin with /hello so put it in pipe A to finish dispatching”, “this one
is not /hello but /foo, so finish dispatching with pipe B”. Something
like sub-route.
something like :
map.connect_with_submap ‘hello/*path_info’ { |sub|
sub.connect ‘foo/:controller/:action’, … # to check url
/hello/foo/…
sub.connect ‘bar/:controller/:action’, … # to check url
/hello/bar/…
} -
I would be very convenient to be able to add a block to do
additionnal checks by hands if the regexp is ok. Maybe something like :
validates only if :id is a multiple of 2
map.connect ‘:controller/:action/:id’,
:requirements => {:id => /\d+/}} ,
{ |request, params| 0 == id % 2 }
Thanks in advance for any reply or idea.
–
Eric D.