尝试使用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
还有其他人看过这个问题吗?
答案 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