Restfull custom actions

I am trying to add a custom restful action. I have try the following
tutorial but stil get an error and not sure why
Rails Routing from the Outside In — Ruby on Rails Guides,
#35 Custom REST Actions - RailsCasts

Here what i am trying to do in my model customer

i have def the following

def friend
@customer = Customer.find(params[:id])
end
Here my route

resources :customers do
collection do
get ‘friend’
end
end
Here the link i try so far

http://localhost:3000/customers/friend
http://localhost:3000/customers/1/friend
I also try member but same error occurs. There error is follow

ActiveRecord::RecordNotFound in CustomersController#friend

Couldn’t find Customer without an ID
Thanks in advance

I think you want “member” instead of “collection” in your route file.
Collection is used when you don’t have an id; member when you do. In
your controller you are using the id, so I’m assuming that this is the
URL you want: http://localhost:3000/customers/1/friend

On 13 August 2012 19:11, Jean-Sbastien D. [email protected] wrote:

@customer = Customer.find(params[:id])

http://localhost:3000/customers/friend
http://localhost:3000/customers/1/friend
I also try member but same error occurs. There error is follow

ActiveRecord::RecordNotFound in CustomersController#friend

Couldn’t find Customer without an ID

That probably means that params[:id] is nil for some reason. First
check in development.log where it will show you the parameters passed
in when you open the url. Then you will know whether the id is not
being passed in or whether you are loosing it somewhere along the way.
Next have a look at the Rails Guide on debugging to see techniques
that you can use to debug the code.

Colin

Paul wrote in post #1072262:

I think you want “member” instead of “collection” in your route file.
Collection is used when you don’t have an id; member when you do. In
your controller you are using the id, so I’m assuming that this is the
URL you want: http://localhost:3000/customers/1/friend

Yeah thank to both of you, member was best and works now :smiley: