thanks Kevin. in case anyone else has the same kind of problem, where
you've got an index page dated items, and want to filter past, future
etc.
my solution is as follows...
in my index view i've added a filter (using your filter-menu-without-
no-option from another thread here)
<div class="filter">
Display by date: <filter-menu-without-no-option param-
name="range" options="&@range"/>
</div>
in the model (possibly overkill, taken directly from railscasts...)
named_scope :future, lambda { |*args |{:conditions => [ "date > ?",
(args.first || Date.today) ] }}
named_scope :overdue, lambda { |*args |{:conditions => [ "date < ?",
(args.first || Date.today) ] }}
named_scope :today, lambda { |*args |{:conditions => [ "date = ?",
(args.first || Date.today) ] }}
then in the controller i have an index method with...
@range = ["All","overdue","today","future"]
if params[:range] == "future"
hobo_index Todo.future.apply_scopes(.....
else if params[:range] == "overdue"
hobo_index Todo.overdue.apply_scopes(:search =>
[params[:search], :name],
else if params[:range] == "today"
hobo_index Todo.today.apply_scopes(:search =>
[params[:search], :name],
and so on. i expect there's a tider solution than my chain of ifs, but
it works for me :-)
thanks again
Paul
On 9 June, 23:38, kevinpfromnm <[email protected]> wrote:
> I thought better of that last recommendation and decides a model
> method to return whichever scope would be more appropriate.
>
> that way, you can have a sane default in the event of a improper
> submission.
>
> On Jun 9, 4:37 pm, kevinpfromnm <[email protected]> wrote:
>
> > you could do just a send but since you're getting that from a param
> > you'd better be careful with the input. object.send(:methodname,args)
> > runs methodname on the object.
>
> > On Jun 9, 4:24 pm, storitel <[email protected]> wrote:
>
> > > hi all
> > > I've more or less figured out how named scopes work - so now I have a
> > > Todo model with Todo.today, Todo.overdue and Todo.future :-)
>
> > > And I've more or less got filter menu down too...
> > > @range = ["today","overdue","future"]
>
> > > in my Todo_controller and
>
> > > <filter-menu-without-no-option param-name="range" options="&@range"/>
>
> > > gives me a filter for the user to choose which Todos he/she wants to
> > > see...
>
> > > now all I need is the flash of insight on how to use the filter to
> > > trigger the scope? why am I so dense?
>
> > > br
> > > Paul
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" 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/hobousers?hl=en.