Lorin Hochstein
Lorin Hochstein

Reputation: 59202

stop simple_form from converting datetime to utc

I have a datetime that gets rendered into a hidden form field using simple_form. The field is called next_event: The erb line looks like this:

  <%= f.input :next_event, as: :hidden, label: false %>

I want this string to be the datetime in the user's local time zone. If I set a breakpoint in the controller code, I can see that the variable is in the correct time zone (in this case, MDT):

:next_event => Wed, 28 May 2014 15:30:00 MDT -06:00,

However, when it gets rendered in HTML, the date time is converted to UTC:

<input class="hidden" id="foo_next_event" name="foo[next_event]" type="hidden" value="2014-05-28 21:30:00">

What can I do to get simple_form to stop converting to utc?

Upvotes: 1

Views: 935

Answers (1)

pdobb
pdobb

Reputation: 18037

You can manually specify the value so that the TimeZone conversion doesn't take place:

<%= f.input :next_event, as: :hidden, label: false, input_html: { value: f.object.next_event.to_s } %>

Another option... may be to use the *_before_type_cast method for your attribute. So in the model define:

def next_event_before_type_cast
  self[:next_event].to_s
end

With this approach you should get the result you want without having to worry about formatting of the date in forms here (or elsewhere).

Upvotes: 3

Related Questions