Forum: Ruby on Rails Please help with a routing problem

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
8bc5d7d843efe863b249b0a593803e70?d=identicon&s=25 Adrian (Guest)
on 2009-01-26 12:09
(Received via mailing list)
Hi All

I'm having some issues with the following routes problem.

The routes.rb file ...
  map.resources :users
  map.connect '/users/view_payments/:user_id', :controller =>
'users', :action => 'view_payments'

The users_controller.rb file ...
  def view_payments
    @user = User.find[:params[:user_id]]
    @payments = @user.payments

The routes list from a rake routes ...
{:controller=>"users", :action=>"view_payments"}

The .../views/users/view_payments.html.erb file ...
   <%= link_to 'View Payments', :controller => 'users', :action =>
'view_payments', :user_id => %>

Then the URL generated from the link_to ...

But this returns a 404 error

Any help/ideas appreciated

5772c599ccab3081e0fffb1d54f3b6de?d=identicon&s=25 Andrew Timberlake (andrewtimberlake)
on 2009-01-26 12:40
(Received via mailing list)
On Mon, Jan 26, 2009 at 1:08 PM, Adrian <>

> The users_controller.rb file ...
>   <%= link_to 'View Payments', :controller => 'users', :action =>
> Adrian
> >
Firstly have you restarted the server, this has bitten me more than a
Otherwise try putting the more specific route first in the routes file.

Andrew Timberlake

"I have never let my schooling interfere with my education" - Mark Twain
9a2a53db8e9b4476038c94a64b32833f?d=identicon&s=25 Ryan Bigg (ryan-bigg)
on 2009-01-26 13:43
(Received via mailing list)
You need to define a member resource on the map.resources :users. For
more information see the guide on routing on
Aff929c2a64da1e0fcb3c0df25a12c41?d=identicon&s=25 alexbo (Guest)
on 2009-01-26 14:03
(Received via mailing list)
map.resources :users, :member => {:view_payments => :get}

should work.
8217faf2bfdfa7daf10135d41ddd421e?d=identicon&s=25 Jeff Cohen (jeff)
on 2009-01-26 16:12
(Received via mailing list)
On Jan 26, 5:08 am, Adrian <> wrote:
>   def view_payments
> 'view_payments', :user_id => %>
> Then the URL generated from the link_to ...
>    http://localhost:3000/users/view_payments/2
> But this returns a 404 error
> Any help/ideas appreciated
> Cheers
> Adrian

As others have said, you just need to define the custom action in your

But I might suggest a more restful approach:

map.resources :users, :has_many => :payments

Then you can use links like


This calls the index action of a Payments controller. You can look at
params[:user_id] to know which user is involved.  This way you don't
need any custom actions.

Just a thought.

8bc5d7d843efe863b249b0a593803e70?d=identicon&s=25 Adrian (Guest)
on 2009-01-26 23:14
(Received via mailing list)
Thanks to all who responded.

I decided to go with the more RESTful approach:

map.resources :users, :has_many => :payments

and use the index action on the payments controller.

This topic is locked and can not be replied to.