I have a model called Todo and I render this:
format.json { render :json => @todo }
Each Todo belongs_to a List. I want to add the value
You may want to capture the value of the JSON data, and then modify it.
format.json { render :json => JSON::parse(@todo.to_json).merge("list" => { "completion_percentage" => 63 }).to_json }
To refine Brandon's answer, try using:
render :json => @todo.attributes.merge({list: { "completion_percentage" => 63 }})
Just so others are aware, calling @todo.attributes will pull off custom methods on attributes. E.g., if you have in your Todo model a method
def written_date
self.written_date = self.written_date.utc.beginning_of_day
end
And an attribute called written_date on the Todo Model, only the attribute will come back that is stored in the database.
And you except the custom method to come back when you call @todo.attributes
, it will not.