你應該在模型中定義它,它將是一個類方法,因爲它沒有分配給類的一個對象,而是分配給類本身。我解決了對子級像這樣
def self.create_by_interval(start_time, end_time, intervall)
((end_time.to_i-start_time.to_i)/(intervall*60)).floor.times do |factor|
TimeSlot.create(:start => start_time+(factor*intervall).minutes, :end_time => start_time+((factor+1)*intervall).minutes)
end
end
當你調用to_i
上轉換爲UNIX時間戳的日期其所以end_time.to_i-start_time.to_i
計算的開始和結束日期之間的secounds。這些秒數根據時間間隔來確定需要多少個對象。 floor
方法將Float
四捨五入,因爲您無法創建1.99日曆對象;)
我從頭寫這篇文章可能不完美,但它應該明確說明如何完成。
//您需要創建一個提交所需數據的表單。然後,您可以處理接收輸入數據的操作中的數據,該數據位於params?
哈希中。你的形式看起來是這樣的:
<%= form_for :date_range, :url => working_path_helper do |f| %>
<%= f-label :start_time %><br />
<%= f.text_field :start_time %><br />
<%= f-label :end_time %><br />
<%= f.text_field :end_time %><br />
<%= f-label :intervall %><br />
<%= f.text_field :intervall %><br />
<%= f.submit %>
<% end %>
然後在控制器,你需要調用類的方法是這樣的:
TimeSlot.create_by_interval(Time.parse(params[:date_range][:start_time]), Time.parse(params[:date_range][:end_time]), params[:date_range][:intervall])
的Time.parse
方法返回一個時間對象支持算法FMP字符串,因爲你不能傳遞任何東西否則,然後通過HTTP的字符串
非常感謝你!這是有道理的;然而,我怎麼會真的調用這個類的方法?假設我有一個觀點,即只有我的管理員可以訪問;我只是創建一個表單並將表單的輸入設置爲等於類方法的參數?我搜索了網頁,但並沒有真正找到一個這樣做的句法性的明確例子。 –
見編輯,...... – davidb