Advice two almost identical controllers

Hi List,

I have a table called invoices where I store all the invoices, the ones
that I create and the ones that I received.

They have the same fields, the same views, the same data, but I must
differentiate between them.

Actually I have one controller called invoices, and from a starting
page, I add a parameter into the url for the kind of invoice I want to

Now, I have to append this extra parameter in all the urls for
going/accessing the invoices, like pagination urls, edit/show/update/

Would be easier to create another controll for handling this ?

for example, now I have:

and I could use:

with this approach, I can forget about append the extra url parameter,
but I’d have two identical controllers, just the difference about id=2
or id=3.

I’m thinking how to solve this while I learn Ruby on Rails …



you could try some routing. add to routes.rb before the last two
automatically generated routes

map.invoices_in ‘in/invoices/:action/:id’,
:controller => ‘invoices’, :type => ‘in’
map.invoices_out ‘out/invoices/:action/:id’,
:controller => ‘invoices’, :type => ‘out’

so now if you do


in your invoices controller:

def show
if params[:type]==‘in’
# handle incoming invoices
# handle outgoing invoices

in your view, you can use the named route

<%= link_to ‘incoming invoice #1’,
invoices_in_path( :action=>‘show’,:id => 1) %>

and it will generate

incoming invoice #1

invoices_in_path and invoices_in_url methods are automatically created
for you because of his

map.invoices_in ‘in/invoices/:action/:id’,…

hi rubynuby,

Sounds great, I’m going to try it as soon as possible …

What I don’t know yet if my pagination links will work, I’ll try it !



hello again,

it’s working perfectly, in all places …


thanks for the idea and solution and help …



This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs