Route generation problems

Charlie Hubbard wrote:

Hi,

I have an outstanding problem with route generation. Right now if I
generate a route with the following syntax.

url_for( :controller => "foo", :action => "bar", :id => 4 )

I get

/foo/bar/4

I always get a URL without a trailing slash on the end. I want to add a
trailing slash always after the ID parameter. I have generated HTML
content that I want to always append to the root URL like above. And I
keep getting bad URLS. I also have another problem when doing route
generation where:

url_for( :controller => "foo", :action => "bar", :id => 4, :page => 5 )

returns:

/foo/bar/4?page=5

Eventhough my route configuration is:

  map.connect "foo/bar/:id/:page",
        :controller => "Foo",
        :action => "bar",
        :requirements => { :id => /\d+/,
                           :page => /(\d+)|(\w+\.html)/ }

This rule is never used when generating routes, and it's really
important because of the problem I showed above.

Any help please?

Charlie

Hey C,

I guess you already tried the following, but just in case:

  map.connect "foo/bar/:id/:page",
        :controller => "foo",
        :action => "bar",
        :requirements => { :id => /\d+/,
                           :page => /(\d+)|(\w+\.html)/ }

  # I've never had explicit x.html
  # requests routed to rails though
  # so I've no idea if it'll work

  map.connect ":controller/:action/:id/"
  map.connect ":controller/:action/:id"

  # should solve the trailing slash issue

Gustav Paul
gustav@rails.co.za