Hi, I''m rendering a reasonable amount of JSON back to an application at the moment and the controllers are starting to get very messy with the code to structure and return the JSON. Is it possible to have a template that can handle the structuring of the JSON data and allow the controller to deal only with the business logic? I''d envisage a controller like this: class PersonController < ApplicationController def search @search = Person.search(params[:query]) end end And a view named "person/search.json.erb" like: json[:total] = @search.size json[:people] = @search.map do |person| { :first_name => person.first_name, :last_name => person.last_name } end The json accessor used in the view would just be a hash that has to_json called on it and is sent back to the browser as the json string. Is it possible to do this at the moment or do I need to add a template type to ActionView? Cheers, -Jonathan, --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Why do you not just use Rails to_json method? class PersonController < ApplicationController def search @search = Person.search(params[:query]) render :json => @search.to_json end end Check out Rendering JSON in api.rubyonrails.org, just look into the render method. I''m not aware of a rxml version for json, but also can''t really see a need for one either. to_json will convert your object directly into a javascript object so you can then eval them in your AJAX response. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I have been using to_json but the issue is that there is often a reasonable amount of processing to structure the json correctly, say 10 lines or so, and the controller is becoming messy. If it was a simple to_json call I wouldn''t be bothered. I would also like access to the helpers for generating bits of HTML that need to be returned. You''re right, what I''m after is rxml for JSON. -Jonathan. On 9/2/07, cammo <mvpaustralia-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > Why do you not just use Rails to_json method? > > class PersonController < ApplicationController > def search > @search = Person.search(params[:query]) > render :json => @search.to_json > end > end > > Check out Rendering JSON in api.rubyonrails.org, just look into the > render method. I''m not aware of a rxml version for json, but also > can''t really see a need for one either. to_json will convert your > object directly into a javascript object so you can then eval them in > your AJAX response. > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Well I knocked together an rjson view template. Here is the code for anyone who is interested: class JsonTemplate def initialize(view) @view = view end def render(template, local_assigns = nil) @view.instance_eval do evaluate_assigns def json; @json ||= {}; end eval(template) end @view.json.to_json end end ActionView::Base.register_template_handler(''rjson'', JsonTemplate) -Jonathan. On 9/2/07, Jonathan Viney <jonathan.viney-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > I have been using to_json but the issue is that there is often a > reasonable amount of processing to structure the json correctly, say 10 > lines or so, and the controller is becoming messy. If it was a simple > to_json call I wouldn''t be bothered. > > I would also like access to the helpers for generating bits of HTML that > need to be returned. > > You''re right, what I''m after is rxml for JSON. > > -Jonathan. > > On 9/2/07, cammo <mvpaustralia-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > Why do you not just use Rails to_json method? > > > > class PersonController < ApplicationController > > def search > > @search = Person.search(params[:query]) > > render :json => @search.to_json > > end > > end > > > > Check out Rendering JSON in api.rubyonrails.org, just look into the > > render method. I''m not aware of a rxml version for json, but also > > can''t really see a need for one either. to_json will convert your > > object directly into a javascript object so you can then eval them in > > your AJAX response. > > > > > > > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---