code: def select_tag_for_filter(model, nvpairs, params)
        return unless model && nvpairs && ! nvpairs.empty?
        options = { :query => params[:query] }
        _url = url_for(eval("#{model}_url(options)"))
        _html = %{<label for="show">Show:</label><br />}
        _html << %{<select name="show" id="show" onchange="window.location='#{_url}' + '?show=' + this.value">}
        nvpairs.each do |pair|
          _html << %{<option value="#{pair[:scope]}"}
          if params[:show] == pair[:scope] || ((params[:show].nil? || params[:show].empty?) && pair[:scope] == "all")
            _html << %{ selected="selected"}
          end
          _html << %{>#{pair[:label]}}
          _html << %{</option>}
        end
        _html << %{</select>}
      end
docs: Use on index pages to create dropdown list of filtering criteria.
   Populate the filter list using a constant in the model corresponding to named scopes.
  
   Usage:
  
   - item.rb:
  
       scope :active,   :conditions => { :is_active => true }
       scope :inactive, :conditions => { :is_active => false }
  
       FILTERS = [
         {:scope => "all",       :label => "All"},
         {:scope => "active",    :label => "Active Only"},
         {:scope => "inactive",  :label => "Inactive Only"}
       ]
  
   - items/index.html.erb:
  
       <%= select_tag_for_filter("items", @filters, params) -%>
  
   - items_controller.rb:
  
       def index
         @filters = Item::FILTERS
         if params[:show] && params[:show] != "all" && @filters.collect{|f| f[:scope]}.include?(params[:show])
           @items = eval("@items.#{params[:show]}.order_by(params[:by], params[:dir])")
         else
           @items = @items.order_by(params[:by], params[:dir])
         end
         ...
       end