如何在Rails 3.2中使用JBuilder渲染json

dB'*_*dB' 2 ruby json ruby-on-rails jbuilder ruby-on-rails-3

我正在尝试将JBuilder集成到Rails 3.2项目中.我已经安装了gem,我已经写了一个JBuilder文件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
Run Code Online (Sandbox Code Playgroud)

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

Die*_*zar 7

删除你传递给的街区format.json.你导致它忽略你的jbuilder文件而是返回json: @books作为响应的结果.如果你把区块留下:

respond_to do |format|
  format.html # index.html.erb
  format.json # no block here
end
Run Code Online (Sandbox Code Playgroud)

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