Quick json question

How does one format a time when serializing an active record object?
Server side somehow or leave it up to client side javascript?

-tim

Tim W. wrote:

How does one format a time when serializing an active record object?

I’m not sure I quite follow your question, but I do know that the
to_json method as implemented in Rails uses the same date and time
formats as does to_xml.

Example:
“2009-08-19T13:03:07Z”

Server side somehow or leave it up to client side javascript?

In the case of to_json the serialization of date and time gets formatted
as a string on the server-side. I assume if you were to use that data in
JavaScript (client-side) you would need to parse the string date/time
format to a JavaScript Date object. I’m sure you could find a JS code
snippet to handle that.

Yeah… I was basically wonder what the best practice / preferred
method for this was.

When using ajax and json to update a page with a new object that
includes a date… (like created_at) and you want that date to be only
month and day… Do you parse the date on the server side and send over
as string (Is that possible with to_json?) or do you send over the
default ISO format and do the conversion on the client side in
javascript.

I’d like to do it on the server side, but then the only way I can see
is a complete hack around by adding another method to the ActiveRecord
class.

def created_at_formatted
self.created_at.to_S(‘md’)
end

object.to_json( :methods => [:created_at_formatted] )

-tim

On Aug 19, 9:19 am, Robert W. [email protected]

Tim W. wrote:

I’d like to do it on the server side, but then the only way I can see
is a complete hack around by adding another method to the ActiveRecord
class.

def created_at_formatted
self.created_at.to_S(‘md’)
end

object.to_json( :methods => [:created_at_formatted] )

Model objects should not be responsible for formatting data for
presentation. This responsibility should be implemented in view objects
(or view helper objects such as formatter objects).

That is why I mentioned it was a hack…

I take it there is no way to do it via the to_json method which is the
view at this point?

Thanks…
-tim

On Aug 19, 3:46 pm, Robert W. [email protected]

Tim W. wrote:

That is why I mentioned it was a hack…

I take it there is no way to do it via the to_json method which is the
view at this point?

Given that JSON offers no data type for storing date and time
information, a choice must be made. Rails core team, I believe smartly,
decided to borrow the string representation of time from XML, which does
define standard date and time representations.

I would not call this a view. In the same way as databases store
representations of the data, so does the serialized string of JSON or
XML.

What I was getting at in my previous reply was that regardless of how
the data is actually stored in a data model (whether that be in model
objects, a database or a serialized string) it is still the
responsibility of the view layer in MVC to format the data for
presentation to the user.

Even though the serialized date may be stored as “2009-08-19T13:03:07Z”
you probably would not want to present that to the end user. They would
probably prefer something based on their own locale. In the US that
might be: “August 19, 2009 9:00 AM” or in Europe maybe something like
“19 August 2009 09:00.” If I’m not mistaken you can use I18n
(Internationalization) in Rails to format dates based on the user’s
locale.

Given that JSON (or XML) are not what you present to end users, you
would store the date and time in a way meaningful to your model. Only
when you present that data to a human do you run the data through
formatters for presentation.