views:

322

answers:

2

If I have a block of code like this:

  def show
@post = Post.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @post }
end

end

How do I add something like

format.json

Any tips, pointers, ideas gladly welcomed...

+1  A: 

It's just like the other formats except that you use render :json instead.

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @post }
  format.json { render :json => @post }
end
rogeriopvl
Thanks buddy - I just figured it out by reading the guide - http://guides.rubyonrails.org/layouts_and_rendering.htmlBut you got me there faster!
Oberon Dude
+1  A: 

or you can handle it as javascript

respond_to do |format| format.js { render :json { :only => :name}.to_json end

then you just access your action with ".js" in the end.

VP
Is there an advantage to this approach versus format.json?
Oberon Dude
@Oberon Dude, for what it's worth, I've seen `format.js` a lot more than I have seen `format.json`.
macek
i didn't check. Normally by the default route, :controller/:action.:format any format is possible, but i don't know if all browsers are able to understand json mime-type..
VP