Json formatting


#1

I’m really new to rendering formats with rails and would appreciate a
little help with a json issue.

I have created a booking model in which I would like to sync with a
jquery calendar called “full calendar” through json. They have an
example json script output with the following:

[
{
“id”:1,
“title”:“Event1”,
“start”:“2009-05-10”,
},
{
“id”:2,
“title”:“Event2”,
“start”:“2009-05-20”,
“end”:“2009-05-22”,
“url”:“http://yahoo.com/
}
]

When using the json format in rails I get:

[
{
“booking”:{
“updated_at”:“2009-05-01T15:42:44Z”,
“title”:“Booking”,
“property_id”:1,
“id”:1,
“end”:“2009-05-19”,
“start”:“2009-05-06”,
“created_at”:“2009-05-01T15:42:44Z”
}
},
{
“booking”:{
“updated_at”:“2009-05-06T09:09:48Z”,
“title”:“Booking”,
“property_id”:1,
“id”:2,
“end”:“2009-08-26”,
“start”:“2009-08-19”,
“created_at”:“2009-05-06T09:09:48Z”
}
}
]

How do I change how the json format is rendered within rails 2. I need
to get rid of “booking”, “updated_at”, property_id" and created_at".

Thanks for any help.


#2

You can avoid getting the table name - which I take it is “booking” in
your case - by telling ActiveRecord not to include that with the
following code

ActiveRecord::Base.include_root_in_json = false

You can filter the fields you want in your database query and then
to_json on the query result should give you what you need without the
table name.

-S


#3

you can use except option in to_json
Example :
@booking.to_json(:except=>[:updated_at,:property_id,:created_at]
and to get rid of booking. From rails 2.1+ you should configure in
config/initializers/new_rails_defaults.rb file :
ActiveRecord::Base.include_root_in_json = false


#4

I think you can do something like this…

@booking.to_json(:only=>[“title”,“id”,“start”,“end”,“url”])