rails - how to render a JSON object in a view
right now I'm creating an array and using:
render :json => @comments
This would be fine for a simple JSON object, but right now my JSON object requires several helpers which is breaking everything and requiring hel开发者_StackOverflow中文版per includes in the controller which seems to cause more problems than solved.
So, how can I create this JSON object in a view, where I don't have to worry about doing anything or breaking anything when using a helper. Right now the way I'm making the JSON object in the controller looks little something like this? Help me migrate it to a view :)
# Build the JSON Search Normalized Object
@comments = Array.new
@conversation_comments.each do |comment|
@comments << {
:id => comment.id,
:level => comment.level,
:content => html_format(comment.content),
:parent_id => comment.parent_id,
:user_id => comment.user_id,
:created_at => comment.created_at
}
end
render :json => @comments
Thanks!
Or use:
<%= raw(@comments.to_json) %>
to escape out any html encoding characters.
I would recommend that you write that code in an helper itself. Then just use the .to_json
method on the array.
# application_helper.rb
def comments_as_json(comments)
comments.collect do |comment|
{
:id => comment.id,
:level => comment.level,
:content => html_format(comment.content),
:parent_id => comment.parent_id,
:user_id => comment.user_id,
:created_at => comment.created_at
}
end.to_json
end
# your_view.html.erb
<%= comments_as_json(@conversation_comments) %>
<%= @comments.to_json %>
should do the trick too.
精彩评论