我正在尝试使用帮助器方法构建一个哈希数组(我认为这是我用它的方式),以便我可以在我的视图中使用它。我从列@ other_events.time_start和@ other_events.time_end获取了2个值。
helper.rb
def taken_times()
@taken_times = []
@other_events.each do |e|
@taken_times << { e.time_start.strftime("%l:%M %P") => e.time_end.strftime("%l:%M %P")}
end
@taken_times
end
我想要的是一系列像这样的哈希:
['10:00am', '10:15am'],
['1:00pm', '2:15pm'],
['5:00pm', '5:15pm'],
基本上是
[&#39; e.time_start&#39;,&#39; e.time_end&#39;],
答案 0 :(得分:2)
我认为你应该重构你的方法:
def taken_times(other_events)
other_events.map { |event| [event.time_start, event.time_end] }
end
@taken_times
,但您可以轻松拨打@taken_times = taken_times(other_events)
。other_events
而不是全局变量@other_events
,在某些视图中可能是nil
。x
,其中0 ≤ x < +infinity
)。time_start
和time_end
之间进行一些计算然后在你看来:
taken_times(@your_events).each do |taken_time|
"starts at: #{taken_time.first.strftime("%l:%M %P")}"
"ends at: #{taken_time.last.strftime("%l:%M %P")}"
end
答案 1 :(得分:0)
你要求一系列哈希([{},{},{},...]):
Array: []
Hash: {}
但是你期待一个数组数组([[],[],[] ...])
你应该这样做:
def taken_times()
@taken_times = []
@other_events.each do |e|
@taken_times << [e.time_start.strftime("%l:%M %P"), e.time_end.strftime("%l:%M %P")]
end
@taken_times
end