3

我有comment资源。我有一个处理 的控制器,respond_with现在,它应该提供所有 JSON 响应(这是正确发生的)。我正在使用Rabl来处理我的 JSON/XML 渲染,并且我正在把事情弄干一点。我有正确的方式我希望commentcomments/show.rabl.

object @comment

attributes :id, :body, :a_few_more_things

当进行 POST 调用/comments/(触发create我的控制器上的方法)时,我希望 Rails 以与视图comment相同的格式返回show(上图)。我有,在我的create职能...

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

这是行不通的;它只是返回一个comment带有所有属性的平面 JSON 实现。它没有使用我show.rabl的 at comments/show.rabl如何让我的create操作返回 @commentshow.rabl用作布局?

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

4

3 回答 3

3

我能够通过在comments/create.rabl.

object @comment

extends "comments/show"

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

感谢Martin Harrigan提醒我我的问题还有待解决!

于 2012-01-02T19:18:29.663 回答
0

您可以使用,保持干燥:

render :show, :status => :created
于 2012-07-30T12:57:22.337 回答
0

在 Rails4 中,您可以指定模板:

def create
  respond_with @comment, status: :created, template: 'comments/show'
end
于 2014-03-18T11:05:41.093 回答