我有一个comment
资源。我有一个处理respond_with
的控制器,现在,它应该提供所有JSON响应(正确发生)。我正在使用Rabl来处理我的JSON / XML渲染,而且我正在进行一些干扰。我有正确的方式,我希望在comment
呈现comments/show.rabl
。
object @comment
attributes :id, :body, :a_few_more_things
当在/comments/
(在我的控制器上触发create
方法)进行POST调用时,我希望Rails以与{{1}相同的格式返回comment
查看(上图)。我的show
函数......
create
这不起作用;它只返回def create
# Skip some code, save it, ya-da ya-da
respond_with(@comment, :layout => 'comments/show')
end
的平面JSON实现,其中包含所有属性。它没有在comment
使用我的show.rabl
。 如何使用comments/show.rabl
作为布局让我的create
操作返回@comment?
我看到this post指定了布局文件的完整路径和扩展名;我不应该这样做,不是吗?我使用了错误的show.rabl
吗?它应该是:symbol_option
吗?
答案 0 :(得分:3)
我能够通过在comments/create.rabl
创建Rabl模板来解决此问题。
object @comment
extends "comments/show"
这就是她写的全部内容。 Rails查找create.rabl
视图,该视图接受一个对象,只渲染comments/show.rabl
中定义的字段。
感谢Martin Harrigan提醒我,我仍然打开了我的问题!
答案 1 :(得分:0)
你可以使用,保持干爽:
render :show, :status => :created
答案 2 :(得分:0)
在Rails4中,您可以指定模板:
def create
respond_with @comment, status: :created, template: 'comments/show'
end