Nested Resources And Creating URL Problemos

I am doing the following:
link_to “delete my avatar”, user_pictures_path(:user_id => @user, :id =>
@
user.pictures.last), :method => :delete

and it is creating the following link:

http://127.0.0.1:3000/users/4/pictures?id=10

Two things:

  1. shouldn’t it create the following URL?
    http://127.0.0.1:3000/users/4/pictures/10

i.e. not the ?id=10 but just /10?

  1. Is there a cleaner way of building the url?

Thanks :slight_smile:


John K.
[email protected]

Blog: http://www.kopanas.com
Conference: http://www.cusec.net
Twits: http://www.twitter.com/kopanas

If you are using nested routes like this:

map.resources :users do |user|
user.resources :pictures
end

Then you should be able to do this:

link_to “delete my avatar”, user_pictures_path(@user,
@user.pictures.last), :method => :delete

Michael B.
[email protected]

When I do that I get the following error:

undefined method `has_key?’ for #Picture:0x266d170

when I do it my way I do not get an error but the id of the picture gets
passed in querystring instead of URL… any suggestions peeps?

On Dec 13, 2007 10:33 PM, Michael B. [email protected] wrote:

Michael B.
http://127.0.0.1:3000/users/4/pictures?id=10


John K.
[email protected]

Blog: http://www.kopanas.com
Conference: http://www.cusec.net
Twits: http://www.twitter.com/kopanas

I think you want this instead

user_picture_path(@user, @user.pictures.last) <== Note: singular form
of ‘picture’ in the method name.