advice two almost identical controllers

0 views
Skip to first unread message

Raimon Fs

unread,
Dec 2, 2007, 5:07:11 AM12/2/07
to rubyonra...@googlegroups.com
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
--
Posted via http://www.ruby-forum.com/.

rubynuby

unread,
Dec 2, 2007, 9:27:58 AM12/2/07
to Ruby on Rails: Talk
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

<a href="in/invoices/show/1">incoming invoice #1</a>

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

map.invoices_in 'in/invoices/:action/:id',....

Raimon Fs

unread,
Dec 2, 2007, 10:15:38 AM12/2/07
to rubyonra...@googlegroups.com
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

Raimon Fs

unread,
Dec 2, 2007, 10:39:02 AM12/2/07
to rubyonra...@googlegroups.com
hello again,

it's working perfectly, in all places ...

:-)

thanks for the idea and solution and help ...

regards,


raimon

Reply all
Reply to author
Forward
0 new messages