On Jan 25, 2006, at 9:00 PM, Mike wrote:
For example, I have a (contrived) AnimalType filtering a list of many
Animals–more than can be presented comfortably in a dropdown box.
Instinct tells me you have a broken UI, if you’ve got more than a
‘comfortable’ amount of material in a widget. Pagable grids are
perhaps a hack to deal with this.
Therefore I need to either redirect to another screen to select an
animal (returning after the selection is made), or show a dialog–
modal
or otherwise–to make the selection. The latter might be presented
as a
pagable grid, or perhaps as a grid with a textbox or dropdown to
filter
search results.
What about Ajax auto-completion returning results for which there are
less then n (with a suitably small value for n) completions? So,
you’d just type in the name of the animal …
No clumsy dropdown, no warts in the workflow and a single text input
widget. Feels a lot less broken to me.
Is there a convention for this in Rails? I looked at BaseCamp for
examples but only found small groups of lookup values handled
easily by
simple dropdowns.
Yes. That’s the convention, in some sense. Use small groups only, or
don’t use dropdowns for such cases? I think Rails is about doing the
things that make sense and feel right. No insanity.
A third option would be DHTML magic to dynamically populate a magic
pseudo-window (the way some people handle searches), but I’m
looking for
a way to handle the lookup when this isn’t an option.
I assume you’re thinking about having Javascript turned off, or text
mode browsing?
I would include an unobtrusive, nearby link to a alphabetically
sorted list of the alternatives. Between people using oddball
configurations that make my life more difficult and making their
lives more difficult, I’d choose them jumping through the hoops.
They can always use the find function. ‘Syntactic sugar’ would be to
maybe put that list into a popup window. By clicking on a link in
that popup (or full blown page) you select your animal of choice …
Don’t over-design for the corner cases. Just handle them …
– G.