在 ruby​​ on rails 中以 30 或 60 分钟为增量创建时间步长数组

Not*_*ere 3 ruby arrays ruby-on-rails

我正在 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
Run Code Online (Sandbox Code Playgroud)

但我不断收到错误

can't iterate from Time
Run Code Online (Sandbox Code Playgroud)

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

我只是将它们显示为列表

  ul.list-unstyled
    - @meeting.time_range.each do |calendar_time|
      li 
        = calendar_time
Run Code Online (Sandbox Code Playgroud)

Dee*_*ale 5

利用 step

(Time.now.to_i..1.day.from_now.to_i).step(30.minutes).each do |time|
    puts Time.at(time)
end
Run Code Online (Sandbox Code Playgroud)

所以方法将是

def time_range
  return [] if time_start.blank? || time_end.blank?
  (time_start.to_time.to_i..time_end.to_time.to_i)
end
Run Code Online (Sandbox Code Playgroud)

你可以用它作为

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