我正在尝试将 JBuilder 集成到 Rails 3.2 项目中。我已经安装了 gem,并且在 app/views/books/index.json.jbuilder
中编写了一个 JBuilder 文件。
这是我的索引操作:
def index
@books = Book.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @books }
end
end
这似乎调用了Book
的默认as_json
方法来呈现响应。我需要更改什么才能告诉 Rails 使用我的 JBuilder 模板?
最佳答案
删除您传递给 format.json
的 block 。您导致它忽略您的 jbuilder 文件,而是返回 json: @books
的结果作为响应。如果你把方 block 留在外面:
respond_to do |format|
format.html # index.html.erb
format.json # no block here
end
然后 Rails 将回退到它对响应的默认处理并在您的 View 目录中查找模板,它会找到 jbuilder 文件并将其呈现为响应。
关于ruby-on-rails - 如何在 Rails 3.2 中使用 JBuilder 渲染 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390850/