2015-09-25 49 views
0

我有一個MySQL表,一個名爲「過期」字段是datetime類型的MySQL的日期時間格式%間%D-%Y拋出軌道形式的超出範圍的錯誤

當我訪問軌道編輯此表的頁面,我想顯示的到期日期爲「月/日/年」

在視圖中,edit.html.erb我有以下

<%= form_for @client, url: {action: "update"} do |f| %> 
     ... 
    <div class="field"> 
     <%= f.label :expires, "Expires" %> 
     <%= f.text_field(:expires , :id => 'expires_on') %> 
    </div> 

,並在控制器我有

def edit 
    @client = Client.find(params[:id]) 
    @client.expires = @client.expires.strftime("%m/%d/%Y") 
end 

然而這會引發「參數超出範圍」錯誤 如果我格式化「%d /%M /%Y」我沒有得到錯誤

我猜這已與做積極的記錄不允許月份第一次,但有沒有辦法解決這個問題?

回答

0

如果你絕對需要使用格式化的領域,你可以在新的「虛擬」字段添加到您的模型:

def expires_formatted 
    expires.strftime("%m/%d/%Y") 
end 

def expires_formatted=(val) 
    expires = Date.strptime(val, "%m/%d/%Y") 
end 

,並使用expires_formatted代替expires

但我會建議使用jQuery UI datepicker編輯日期字段。您還可以閱讀Ryan Bates episode on RailsCasts的日期字段實現。

相關問題