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
-~----------~----~----~----~------~----~------~--~---