Go to English Blog

Expandindo o helper DateTime do Rails

Leia em menos de um minuto

No projeto que estou desenvolvendo, preciso exibir um select com os dias da semana. Como o Rails não tem nada parecido (pelo menos não achei), estendi o helper DateTime adicionando um novo método chamado select_weekday. Para utilizá-lo basta adicionar o código abaixo no seu arquivo "environment.rb".

module ActionView
  module Helpers
    module DateHelper
      def select_weekday(date, options = {})
        week_options = []
        date = Date.today if date.nil?
        date_holder = Date.today.cwday.day.ago

        0.upto(6) do |day|
          week_options << (((date.kind_of?(Fixnum) ? date : date.cwday) == day) ?
          %(<option value="#{day}" selected="selected">#{date_holder.strftime("%A")}</option>\n) :
          %(<option value="#{day}">#{date_holder.strftime("%A")}</option>\n)
          )
          date_holder = date_holder.to_date.next
        end
        select_html(options[:field_name] || 'weekday', week_options, options[:prefix], options[:include_blank], options[:discard_type], options[:disabled])
      end
    end
  end
end

Estou gostando muito da flexibilidade que o Ruby oferece e, por conseguinte, o Ruby on Rails.