Rails 3 respond_with:在资源创建时显示“show”布局

时间:2011-12-01 21:39:42

标签: ruby-on-rails ruby json rabl

我有一个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吗?

3 个答案:

答案 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