2011-12-01 31 views
3

我有一个comment资源。我有一个处理respond_with的控制器,现在它应该可以提供所有JSON响应(正确发生)。我使用Rabl来处理我的JSON/XML渲染,而且我正在干一些事情。我有正确的方式我想要一个comment呈现在comments/show.rablRails 3 respond_with:在资源创建时显示“show”布局

object @comment 

attributes :id, :body, :a_few_more_things 

当POST呼叫在/comments/制成(其将触发create方法我的控制器上),我想的Rails在同一格式返回commentshow视图(上图)。我有,在我的create功能...

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

这是行不通的;它只是返回一个带有所有属性的comment的扁平JSON实现。它没有使用我的show.rablcomments/show.rabl如何使用show.rabl作为布局返回@comment的动作create

我看到this post指定布局文件的完整路径和扩展名;我不应该这样做,我应该吗?我使用错了:symbol_option?应该是:location

+1

采取在[JBuilder的顶(https://github.com/rails/ JBuilder中) – Damien

回答

3

我能够通过在comments/create.rabl上创建Rabl模板来解决此问题。

object @comment 

extends "comments/show" 

这就是她写的全部内容。 Rails查找create.rabl视图,该视图接受一个对象并仅呈现comments/show.rabl中定义的字段。

感谢Martin Harrigan提醒我我仍然有我的问题打开!

0

您可以使用,以保持干爽:

render :show, :status => :created 
0

在Rails4您可以指定模板:

def create 
    respond_with @comment, status: :created, template: 'comments/show' 
end