Rails 3 respond_with: show “show” layout on resource creation

I've got a comment resource. I've got a controller that handles respond_with, and for right now, it's supposed to be serving up all JSON responses (which is happening correctly). I'm using Rabl to handle my JSON/XML rendering, and I'm DRY-ing things up a little. I have the proper way I want a comment to be rendered at comments/show.rabl.

object @comment

attributes :id, :body, :a_few_more_things

When a POST call is made on /comments/ (which fires the create method on my controller), I want Rails to return the comment in the same format as the show view (above). I've got, in my create function...

def create
  # Skip some code, save it, ya-da ya-da
  respond_with(@comment, :layout => 'comments/show')
end

This isn't working; it's just returning a flat JSON implementation of the comment with all of the attributes on it. It's not using my show.rabl at comments/show.rabl. How do I get my create action to return the @comment using show.rabl as the layout?

I see this post specifies the full path and extension of the layout file; I shouldn't have to do that, should I? Am I using the wrong :symbol_option? Should it be :location?

Answers


I was able to resolve this issue by creating a Rabl template at comments/create.rabl.

object @comment

extends "comments/show"

And that's all she wrote. Rails looks for the create.rabl view, which accepts one objects and just renders the fields defined in comments/show.rabl.

Thanks to Martin Harrigan for reminding me I still had my question open!


Need Your Help

Amazon EC2 Instance IDs - Why XOR?

amazon-ec2 obfuscation instance xor

According to Guy Rosen and RightScale the Amazon EC2 instance IDs contain two XORs against the first and second half of the "Inner ID" and all three against their own constant.

Multisampling on iPad

iphone opengl-es ios4 multisampling

Is it possible to use multisampling on iPad ?

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.