2013-03-30 69 views
1

我可以幫助你格式化一個日期字段在一個視圖中的下拉列表中。我的日期顯示時間戳,我希望他們顯示爲「mm/dd/yyyy」。Rails格式日期在下拉列表中的查看

在我的模型我從表中選擇一個日期字段的方法:

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(活動日期,「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」我想讓他們顯示爲「2013年4月18日」。我嘗試過使用strftime(「%m /%d /%Y」),但我只是在我的視圖中的下拉列表中出現錯誤。

任何想法?謝謝,

回答

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) %> 
+0

太棒了,路易斯。謝謝。我本應該意識到這一點。謝謝你,謝謝你,謝謝你! –

+0

沒問題,很高興我可以幫你約翰! –

+0

這是一個很好的答案,但我沒有在'options_for_select'的文檔中找到關於傳遞方法('event_date_formatted')的任何內容。我可以通過任何方法嗎? – Heisenberg

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") %> 
+0

Opps對不起重複 –