Hi Again Folks,
For posterity, here is the solution I came up with:
First, I needed to extend the call to paginate:pages. If there was a
category_id value, then I added it to the tag.local member with:
tag.locals.params = {:category_id => @category_id}
This adds the param to the request object in a manner that is easy to check.
Then, in the class RadiantLinkRenderer, which derives from
WillPaginate::LinkRenderer, I modified the page_link method to add the options
to the generated link if present. First, I built the parameter string with:
params = param_options(@options[:params]) if @options[:params]
The "params_options" is a private method that maps the params hash into an
array of key=value strings and joins them with a ",". The whole thing is
returned behind a "?" and is appended to the URL if present. If not, the
params variable equates to nil and there is no impact to the generate URL.
Hope this helps someone in the future.
pdp
________________________________
From: Peter Degen-Portnoy <[email protected]>
Reply-To: Radiant Mailing List <[email protected]>
Date: Thu, 8 Apr 2010 11:09:58 -0500
To: Radiant Mailing List <[email protected]>
Subject: [Radiant] Adding param to pagination
Hi Folks,
I believe this has been addressed in the past, I'd greatly appreciate some
pointers to information.
We have some blog pages with blog categories. The model is that BlogCategory
has_and_belongs_to_many :pages - rather standard. The blog URL is
"<hostname>/blog". When we filter by category, the url is
"<hostname>/blog?category_id=x". However, when filtering by category, the
generated pagination link never includes the category_id parameter. So, in
effect, the pagination is always for the unfiltered blog index. We're using
Aissac's pagination extension with Radiant 0.8.1 and will_paginate 2.3.8.
My understanding is that passing in the :params value to the will_paginate call
will use those values when rendering the URL (from
http://gitrdoc.com/mislav/will_paginate/tree/master/). The example provided
with the :params option is for specifying the controller and action, but it
seems as though it should be the correct mechanism for getting a parameter
generated in the pagination link.
I've tried adding a hash like :params => {:category_id => @category_id} to the
call to the paginate:pages call, but that wasn't passed along to the
will_paginate call, so then I merged the :params value in with the options
passed to will_paginate inside the paginate:pages call, but that wasn't
successful either.
I can see the :params value getting passed into will_paginate, but not getting
picked up. So, while I'm digging further down, I thought I'd ask all you very
experienced experts to see if it's possible to do what we're hoping to do in a
more obvious manner.
Thanks so very much for your time and any help you can offer!
- Peter
_______________________________________________
Radiant mailing list
Post: [email protected]
Search: http://radiantcms.org/mailing-list/search/
List Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Radiant: http://radiantcms.org
Extensions: http://ext.radiantcms.org
_______________________________________________
Radiant mailing list
Post: [email protected]
Search: http://radiantcms.org/mailing-list/search/
List Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Radiant: http://radiantcms.org
Extensions: http://ext.radiantcms.org