在轨道上的ruby中以30或60分钟为增量创建时间步长数组

时间:2017-06-12 13:30:05

标签: ruby-on-rails arrays ruby

我在Rails 4中创建了一个简单的约会守护者,我需要创建一个时间阵列供用户在最小/最大值之间进行选择。用户还可以选择是否创建30或60分钟的约会。

我试图像这样创建数组

 def time_range
     return [] if time_start.blank? || time_end.blank?
    (time_start.to_time .. time_end.to_time).to_a
  end

但我一直收到错误

can't iterate from Time

我不知道如何将其分解为增量。

我只是将它们显示为列表

  ul.list-unstyled
    - @meeting.time_range.each do |calendar_time|
      li 
        = calendar_time

1 个答案:

答案 0 :(得分:4)

利用step

(Time.now.to_i..1.day.from_now.to_i).step(30.minutes).each do |time|
    puts Time.at(time)
end

所以方法将是

def time_range
  return [] if time_start.blank? || time_end.blank?
  (time_start.to_time.to_i..time_end.to_time.to_i)
end

您可以将其用作

ul.list-unstyled
  - @meeting.time_range.step(30.minutes).each do |calendar_time|
    li 
      = Time.at(calendar_time)