raimon
1
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
raimon
2
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’,…
raimon
3
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
4
hello again,
it’s working perfectly, in all places …

thanks for the idea and solution and help …
regards,
raimon