Rails格式日期在视图中的下拉列表中

时间:2013-03-30 16:42:17

标签: ruby-on-rails select tags

我可以帮助您在视图中的for中的下拉列表中格式化日期字段。我的日期显示时间戳,我希望它们显示为“mm / dd / yyyy”。

在我的模型中,我有一个从表中选择日期字段的方法:

def self.get_event_dates
  event_dates = UgradRsvp.find_by_sql("select distinct event_date from admissions.ugrad_rsvps where event_date is not null order by event_date desc")
end 

我们使用Oracle作为我们的数据库,所以我也尝试使用to_char(event_date,'MM / DD / YYYY')作为event_date,但我的下拉列表中的日期仍显示时间戳。

我的观点是一个搜索表单。用户将选择一个日期,然后查看在该event_date上注册参加活动的所有学生的报告:

<%= select_tag "event_date", options_from_collection_for_select(UgradRsvp.get_event_dates, "event_date", "event_date") %>

我的表ugrad_rsvps中有大约八个日期。它们显示为,“2013-04-18 00:00:00 -0400”我想让它们显示为“04/18/2013”​​。我已经尝试过使用strftime(“%m /%d /%Y”),但我只是在我的视图中为下拉列表中的错误(上图)。

有什么想法吗?谢谢,

2 个答案:

答案 0 :(得分:3)

在您的模型中添加以下方法

  def event_date_formatted
    event_date.strftime("%m/%d/%Y")
  end

然后你可以这样使用:

<%= select_tag "event_date", options_from_collection_for_select(UgradRsvp.get_event_dates, 'event_date', :event_date_formatted) %>

答案 1 :(得分:0)

我还没试过,但您可以尝试将方法添加到模型中,如

class UgradRsvp < ActiveRecord::Base
    def event_date_text
        event_date.strftime("%d/%m/%Y")
    end
end

然后将event_date_text调用为txt_method

<%= select_tag "event_date", options_from_collection_for_select(UgradRsvp.get_event_dates, "event_date", "event_date_text") %>