Rails 3: datetime_select with am / pm parameters

In Rails 3, is there a way to use datetime_select and a show clock showing a 12-hour hour / evening option, rather than 24-hour options?

+4
source share
3 answers

In case someone stumbles on this question, the answer for rails 3.2:

<%= f.datetime_select :attribute_name, ampm: true %> 
+7
source

Here is the method I added to my helper class:

 def am_pm_hour_select(field_name) select_tag(field_name,options_for_select([ ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"], ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["12 PM", "12"], ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"], ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["12 AM", "0"]])) end 

Then I included this method in my view:

 <%= am_pm_hour_select "eventtime[start(4i)]" %> 

It seemed like a trick, but if there is a more idiomatic way to do this, I would be interested to hear.

(update: fixed bugs detected by thucydides)

+2
source

The code below is processed at midnight and at noon incorrectly: it calls the noon "12 AM", which is midnight; he rings at midnight "12 pm," which is at noon.

In addition, the code should use 0:00 as midnight, which is an international standard.

Fixed

 def am_pm_hour_select(field_name) select_tag(field_name,options_for_select([ ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"], ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["Noon", "12"], ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"], ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["Midnight", "0"]])) end 
+2
source

Source: https://habr.com/ru/post/1314243/


All Articles