Strange Routing

Hi Guys,

I have some strangeness with routing, using standard route

   map.connect ':controller/:action/:id'    map.connect ':controller/:action/:id.:format'

Using console I did

rts = ActionController::Routing::Routes

rts.generate(:action => "edit", :controller => 'vendorlocations', :id => 10)

=> "/vendorlocations/10/edit"

rts.recognize_path("/vendorlocations/10/edit")

=> {:action=>"10", :id=>"edit", :controller=>"vendorlocations"}

1) I don't understand why the ID is where the action is when I generate the router 2) And because of that the :id and :action have been switched.

Has anyone seen this behaviour before? am I doing something wrong?

Many Thanks

Peter

I do have the same question since long..luckily you asked. I'll watch this thread

Rails List wrote:

I do have the same question since long..luckily you asked. I'll watch this thread

I found something which worked - if I did :controller => 'vendorlocation' as opposed to :controller => 'vendorlocations' it seemed to do the right thing...

/vendorlocation/edit/:id

Is strange though as when I use the helper

edit_vendorlocation_path(location)

It generates the

/vendorlocations/:id/edit which is NOT accepted with a POST but it works when in a normal link....

Hmmmmm

if you edit something it should be a GET request and then POST it to the update action right? You are better off just removing the default routes and rolling your own...

like map.resources :venderlocations

Or is there something I'm missing here...

heimdull wrote:

if you edit something it should be a GET request and then POST it to the update action right? You are better off just removing the default routes and rolling your own...

like map.resources :venderlocations

Or is there something I'm missing here...

Its a POST as I am using the remote_link_to method which seems to use a POST, I'm a total newbie at this so not sure what map.resources does (although i will now look it up)

Hey Pete,

On the latest 2-3-stable I found I had to reverse the last defaults connect statements in my routing. They now read:

  # Rails default routes

If this is a link_to_remote then its a little different. What is it that you want to happen when you click the link? If you are new to Rails I find it much easier to first get a normal link_to working then start adding ajax to the views.