Parameters in routing paths

Hello all.

I have what I think is a pretty common dilemma with Rails routing, and I haven't been able to find or come up with a clean/DRY solution.

I have a home controller that is used for displaying real estate information. I want to be able to show this information on different platforms in different ways: desktop and mobile. I have seen similar topics for displaying custom iphone interfaces, but that usually involved using subdomains, which is not an option for me.

First, here is the relevant routing:

<pre> map.resource :home map.with_options :controller => 'home' do |r|     r.property '/property/:listing_id', :action => 'show'     r.property_details '/property/:listing_id/details', :action => 'details'     r.search '/search', :action => 'search', :conditions => { :method => :post } end </pre>

So what I want to do is have urls that looks like this: /desktop/property/1 -or- /mobile/property/2/details

I know that I can add a route like this: <pre> r.property '/:platform/property/:listing_id', :action=>'show', :target_platform => /(desktop|mobile)/i </pre>

The problem with this is that it isn't DRY, as every named route would now need the /:platform/ prefix added to it. Additionally, every URL I want to call would explicitly need to specify the platform, like so (again not DRY): property_path(:listing => 1, :platform => 'desktop')

Finally, I know you can add custom respond_to with Rails 2.0 (e.g request.format = :iphone), but I want to allow the user to select the format, not purely based on detection.

Anyway, if you are still reading this, thank you. I'd greatly appreciate any sort of help. I have seen similar discussions surrounding internationalization (e.g. /en/home/ vs /fr/home).

Thanks again.