まさにあなたが望むもののための組み込みのヘルパーを知りません。作成して共有することをお勧めします。ドロップダウンの最初の項目を午前 12 時にしたくない可能性が高いため、これは構成オプションにする必要があります。
また、午前 12 時が 0 または 24 の場合も設定可能である必要があります。
バニラを使用したベースは次のselect_tag
とおりです。
<%= f.select :your_attribute, [
["6am", 6], ["7am", 7], ["8am", 8], ["9am", 9], ["10am", 10], ["11am", 11], ["12pm", 12], ["1pm", 13], ["2pm", 14], ["3pm", 15], ["4pm", 16], ["5pm", 17], ["6pm", 18], ["7pm", 19], ["8pm", 20], ["9pm", 21], ["10pm", 22], ["11pm", 23], ["12am", 24], ["1am", 1], ["2am", 2], ["3am", 3], ["4am",4 ], ["5am", 5]
], class:''%>
ユーザーには 12 時間で表示され、サーバーには 24 時間の整数がポストされます。
アップデート
とにかく必要だったので、先に書きました....ビューで:
<%= am_pm_hour_select f, :your_method, start:3 %>
(構文は ではなく であることに注意してf.helper
くださいhelper f, other_options
)
でapp/helpers/am_pm_form_helper.rb
:
module AmPmFormHelper
#pass start:Fixnum in the options hash to set the first drop down selection
def am_pm_hour_select(object, method, options = {}, html_options = {})
select_options = [ ["6am", 6], ["7am", 7], ["8am", 8], ["9am", 9], ["10am", 10], ["11am", 11], ["12pm", 12], ["1pm", 13], ["2pm", 14], ["3pm", 15], ["4pm", 16], ["5pm", 17], ["6pm", 18], ["7pm", 19], ["8pm", 20], ["9pm", 21], ["10pm", 22], ["11pm", 23], ["12am", 24], ["1am", 1], ["2am", 2], ["3am", 3], ["4am",4 ], ["5am", 5]]
unless options[:start].nil?
shift_if_needed = Proc.new{|hour, start| hour<start ? hour+24 : hour}
select_options.sort!{|x, y| shift_if_needed.call(x.last,options[:start]) <=> shift_if_needed.call(y.last, options[:start]) }
end
object.select(method, select_options, options = {}, html_options = {})
end
end