Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
# # SELECT pulldown from a start month to an end month. If the options[:name] is passed a # parameter in the URL, the SELECT will default to the matching OPTION entry. Otherwise, # it will default to the one with the end date. Date string must be parsable by Time.parse(). # # options: { # :name, # :start, # :end (optional; defaults to current month) # } # # Usage: # <%= select_month :name => 'period', :start => '2008/11' %> # def select_month(options) output = "" output.concat "<select name=\"#{options[:name]}\">\n" dstart = Time.parse(options[:start]) dcurrent = dstart if options[:end].nil? dend = Time.now else dend = Time.parse(options[:end]) end while dcurrent.strftime('%Y%m').to_i <= dend.strftime('%Y%m').to_i do period = dend.strftime('%Y_%m') unless params[options[:name]].nil? period = params[options[:name]] end selected = "" if dcurrent.strftime('%Y_%m') == period selected = "selected=\"selected\"" end output.concat "<option value=\"#{dcurrent.strftime('%Y_%m')}\" #{selected}>" output.concat dcurrent.strftime('%B %Y') output.concat "</option>\n" dcurrent += 1.month end output.concat "</select>\n" return output end
This paste will be private.
From the Design Piracy series on my blog: