2013-04-21 50 views
0

我在一個Rails應用程序中使用Chronic,如下所示。我有一個單獨的文本字段(jQuery下拉列表)日期和時間的表單。在我的模型中,我有一些虛擬屬性,它們應該使用Chronic來解析組合數據時間到數據庫。慢性正確解析日期,但無論我在文本字段中輸入什麼時間,都會在日期時間字段中輸出12:00:00作爲時間。我測試了IRB中的輸入類型,它似乎工作正常,我在這裏錯過了什麼?慢性不正確解析時間

型號:

class VisitBlock < ActiveRecord::Base 
    attr_accessible :start_date_text, :time_text 
    attr_writer :start_date_text, :time_text 
    before_save :save_start_date_text 

    def time_text 
    end 

    def start_date_text 
    @start_date_text || visit_date_start.try(:strftime, "%m-%d-%Y") 
    end 

    def save_start_date_text 
    self.visit_date_start = Chronic.parse("#{start_date_text} #{time_text}").in_time_zone if @start_date_text.present? 
    end 

控制檯登錄:

Started POST "/visit_blocks" for ************** at 2013-04-21 19:56:20 +0000                                        
Processing by VisitBlocksController#create as HTML                                              
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"Ns4YyAL9a44RU3T/wOw+DPcigVbBd6eQ5wz1exq3g1M=", "visit_block"=>{"start_date_text"=>"04/22/2013", "time_text"=>"05:15 AM"}, "hou 
r"=>"05", "minute"=>"15", "meridian"=>"AM", "button"=>""}                                            
    Client Load (4.8ms) SELECT "clients".* FROM "clients" WHERE "clients"."last_name" IS NULL LIMIT 1                                 
    (0.1ms) begin transaction                                                   
    SQL (3.2ms) INSERT INTO "visit_blocks" ("visit_date_start") VALUES (?) [["created_at", Sun, 21 Apr 2013 19:56:20 UTC +00:00], ["updated_at", Sun, 21 Apr 2013 19:56:20 UTC +00:00], ["visit_date_start", Mon, 22 Apr 2013 12:00:00 UTC +00:00]]                                        
    (6.7ms) commit transaction 
+0

'visit_date_start'是什麼類型?解析工作正常AFAICT,使用日誌中顯示的參數:'Chronic.parse(「#{start_date_text}#{time_text}」)。in_time_zone => 2013年4月22日星期一09:15:00 UTC +00:00'你確定參數被正確拉出嗎? – 2013-04-21 20:35:18

+0

從schema.rb:t.datetime「visit_date_start」。我不確定如何測試參數是否正確拉出。 – Shaun 2013-04-21 23:01:15

回答

0

我意識到我沒有在我的模型中定義的 「TIME_TEXT」 正確。我通過在控制檯中打印相關日期/時間發現了這一情況。

打印到日誌文件(想出了無)

p time_text 

修正TIME_TEXT定義:

@time_text || visit_date_start.try(:strftime, "%I:%M %P")