On 27/05/2009, at 7:40 PM, fRAnKEnSTEin wrote: > > Hi there, > > i have a catalog of products, i am using will paginator for paging the > results. now The user can sor the products by: name, price or > category, and can filter the products by category and ocation. For > doing this i have used link_to hepler like so: > > link_to "Name", :action => :index, :orderby => "name" > > link_to "Category", :action => :index, :orderby => "category_id" > > link_to "Price", :action => :index, :orderby => "price" > > for category in @categories > link_to category.name, :action => :index, :category => category.id > end > > for ocation in @ocations > link_to ocation.name, :action => :index, :ocation => ocation.id > end > > So, when the user click in the sort functionality, the URL will be any > of these: > > http://www.something.com/gallery/page/4?orderby=name > http://www.something.com/gallery/page/4?orderby=category_id > http://www.something.com/gallery/page/4?orderby=price > > And when the user click on the filter funtionality the URl will be > any: > > http://www.something.com/gallery/page/4?category=1 > http://www.something.com/gallery/page/4?ocation=3 > > I am having problems because i do not know how to keep both parameters > on the url if the user click on one of the sort links anf one of the > ocation or category links. In this case what i want to have in my URL > will be: >
Hi Frankenstein (;-)), In your controller, you'll need to do something like this: @page = params[:page] @category_id = params[:category] @orderby = params[:orderby] @ocation_id = params[:ocation] and so on. As you (may or may not) know, these instance variables (the ones with @ signs) get auto-transferred to view for you... Now in the view, your links will have to include all of these... (omitting them obviously where you're overriding them or setting them specifically - for example where you're setting the sort order link, you wouldn't want to include the sort order instance varaible there...) eg: link_to "Name", :action => :index, :orderby => "name", :category => @category_id, :page => @page, :ocation => @ocation_id for category in @categories link_to category.name, :action => :index, :category => category.id, :page => @page, :orderby => @orderby, :ocation => @ocation_id end for ocation in @ocations link_to ocation.name, :action => :index, :ocation => ocation.id, :category => @category_id, :page => @page, :orderby => @orderb end And back in the controller, your find command will need a condition clause that only uses the params that have been set, and order clause that only uses the orderby params if it's been set. HTH, Julian ---------------------------------------------- Learn: http://sensei.zenunit.com/ Last updated 20-May-09 (Rails, Basic Unix) Blog: http://random8.zenunit.com/ Twitter: http://twitter.com/random8r > http://www.something.com/gallery/page/4?category=1&orderby=name > > Or if nothing has been selected, i wish for example: > > http://www.something.com/gallery/page/4?category=&orderby= (in this > case i set defaults values for each parameter) > > Any idea, suggestion? > > Regards > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

