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
retrieve.

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:

http://127.0.0.1:3000/invoice/list?kind=2

http://127.0.0.1:3000/invoice/list?kind=3

and I could use:

http://127.0.0.1:3000/invoice_me/list

http://127.0.0.1:3000/invoice_to/list

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 …

thanks,

raimon

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

http://localhost:3000/in/invoices/show/10

in your invoices controller:

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

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 !

thanks!

rai

hello again,

it’s working perfectly, in all places …

:slight_smile:

thanks for the idea and solution and help …

regards,

raimon

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