Rails 3.1:Jbuilder渲染空视图

时间:2012-04-03 18:43:26

标签: ruby-on-rails json ruby-on-rails-3.1 jbuilder

尝试使用Jbuilder为我的应用创建一些JSON视图,但视图是空的。但是,在控制台中使用构建器代码可以正常工作。

控制器代码:

@placements = Placement.all
respond_to do |format|
  format.html
  format.json
end

Jbuilder视图(index.json.builder):

Jbuilder.encode do |json|
  json.array!(@placements) do |json, placement|
    json.id placement.id
    json.name placement.name
  end
end

访问http://localhost:3000/placements.json会导致空白页面。删除respond_to格式块无济于事。如果我在控制器中使用以下代码,我会得到一个输出,但显然不是Jbuilder输出。

respond_to do |format|
  format.html
  format.json {render json: @placements}
end

还有其他人看过这个问题吗?

3 个答案:

答案 0 :(得分:1)

@Robin - 它渲染了错误的模板,但我的扩展名错误了。我使用builder代替jbuilder

答案 1 :(得分:0)

我认为您需要删除f

respond_to do |format|
  format.html
  format.json {render json: @placements}
end

答案 2 :(得分:0)

rails specs 中的issue与jbuilder 2.6.0 rails 5.0.0和现有视图相同。

建议在上述问题解决方案中使用:

通过添加带有集合或资源的渲染类型来解决

例如index操作替换:

render :index

使用:

render :index, json: @collection

或者通过配置这样的rspec来解决:

# spec/spec_helper.rb
RSpec.configure do |config|
  config.render_views = true
end

或者

class ApplicationController < ActionController::API
  include ActionView::Rendering
end