填充simpleform列表框的时间数组

时间:2012-11-03 18:25:13

标签: ruby-on-rails-3 activerecord

我有一个时间字段,并希望只显示以下时间:

09:00 09:15 09:30 09:45 10:00 ... 14:00

我正在使用Simple_Forms,bootstrap和activerecord。

我尝试过的最后一件事是设置一个像这样的全局初始化器:

ValidHours =
['09:00', '09:15', '09:30', '09:45', '10:00', '10:15', '10:30', '10:45', 
  '11:00', '11:15', '11:30', '11:45', '12:00',
  '12:15', '12:30', '12:45', '13:00', '13:15', '13:30', '13:45', '14:00']

然后在我使用的Simple_Forms中:

  <%= f.input :order_until_hour, :label => "Order until", :collection => ValidHours %>

这会正确显示值,但它们似乎不会保存在数据库中。

如果可能的话,我也希望在模型中包含此信息。

我也尝试过:

def self.ValidHours
  ['09:00', '09:15', '09:30', '09:45', '10:00', '10:15', '10:30', '10:45', '11:00',
    '11:15', '11:30', '11:45', '12:00', '12:15', '12:30', '12:45', '13:00', 
    '13:15', '13:30', '13:45', '14:00']
end

并在视图中:

  <%= f.input :order_until_hour, :label => "Order until", :collection => ValidHours %>

但这也不起作用。

感谢您提供任何线索!

编辑:

感谢你回复uDaY。我试过你的建议。

它们现在正确显示,我也检查了数据库,它们也得到了保存。但是,如果我点击编辑(保存后),它仍然显示为空。

这是代码:

class Shop < ActiveRecord::Base

  def self.ValidHours
      [['09:00', '09:00'], ['09:15', '09:15'], ['09:30', '09:30'], ['09:45', '09:45'], ['10:00', '10:00'],
       ['10:15', '10:15'], ['10:30', '10:30'], ['10:45', '10:45'], ['11:00', '11:00'], ['11:15', '11:15'],
       ['11:30', '11:30'], ['11:45', '11:45'], ['12:00', '12:00'],
       ['12:15', '12:15'], ['12:30', '12:30'], ['12:45', '12:45'], ['13:00', '13:00'], ['13:15', '13:15'],
       ['13:30', '13:30'], ['13:45', '13:45'], ['14:00', '14:00']]
  end

并在视图中:

      <%= f.input :order_until_hour, :label => "Order until", :collection => Shop.ValidHours %>

在数据库中,值显示为:

order_until_hour: "2000-01-01 09:00:00"

所以我想我会像这样改变ValidHours:

  def self.ValidHours
      [['09:00', '2000-01-01 09:00'], ['09:15', '2000-01-01 09:15'] …

但这没有任何区别。

1 个答案:

答案 0 :(得分:0)

您有key这是下拉列表中显示的文字,但value不在那里,所以你做了类似的事情:

def self.ValidHours
  [['09:00','09:00'], ['09:15','09:15'], ['09:30','09:30'],['09:45','09:45'],['10:00','10:00'],['10:15','10:15'],['10:30','10:30'], ['10:45','10:45'],['11:00','11:00']]
end

希望这有帮助!