時間フィールドがあり、次の時間のみを表示したいと考えています。
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'] …
しかし、それは何の違いもありません。