Routes Optional Values

I’m trying to my a url that has optional (and not optional values)

for example

http://myserver/store/cats/a/b/c

A and C are optional
where the following are valid

http://myserver/store/cats/a/b/c
http://myserver/store/cats//b/c
http://myserver/store/cats/a/b
http://myserver/store/cats//b

And the following is invalid

http://myserver/store/cats/a//c

I know the last value can be optional by including ,:c=>nil
But the only way I can think of for middle values to be optional is to
have all permutations written out.

for example
map.connect ':store/:cats/:a/:b/:c, :c=> nil
map.connect ':store/:cats//:b/:c, :a=> nil, :c=> nil

For a couple of variables this is fine, but moving to 3 or more, and it
gets nuts fast.

Is there an easier way to handle this?

http://myserver/store/cats//b/c

for example
map.connect ':store/:cats/:a/:b/:c, :c=> nil
map.connect ':store/:cats//:b/:c, :a=> nil, :c=> nil

For a couple of variables this is fine, but moving to 3 or more, and it
gets nuts fast.

Is there an easier way to handle this?

Dont’ know if it’s any easier, but it’s a cleaner route…

map.connect “:store/:cats/*args”,…

Then in the action that handles the above route, you’ll have
params[:args]
as an array and can do whatever you want with it redirecting to an error
(or 404, etc.) page if it isn’t what you want.

-philip