2

我正在尝试将 JBuilder 集成到 Rails 3.2 项目中。我已经安装了 gem,并且在app/views/books/index.json.jbuilder.

这是我的索引操作:

  def index

    @books = Book.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @books }
    end
  end

这似乎调用了默认as_json方法Book来呈现响应。我需要改变什么来告诉 Rails 使用我的 JBuilder 模板?

4

1 回答 1

9

删除您要传递到的块format.json。您导致它忽略您的 jbuilder 文件,而是返回结果json: @books作为响应。如果您将块排除在外:

respond_to do |format|
  format.html # index.html.erb
  format.json # no block here
end

然后 Rails 将回退到它对响应的默认处理并在您的视图目录中查找模板,它会找到 jbuilder 文件并将其呈现为响应。

于 2014-01-27T20:56:46.953 回答