HAML防止模板引擎呈现除HTML之外的任何内容
我正在使用Jbuilder(我也尝试使用Rabl)来渲染json。 当我尝试在我的应用程序中呈现jbuilder模板时,它会在layouts / application文件中呈现模板并将HTML作为JSON返回(请参阅layouts / application’中的行’):
在Github上骑控制器
Started GET "/random_photo.json" Processing by RidesController#random_photo as JSON >> Rendered rides/random_photo.json.jbuilder within layouts/application (0.3ms) Rendered shared/_banners_in_corners.haml (3.0ms) Rendered shared/_sign_in_and_out.haml (2.0ms) Rendered layouts/_navigation.haml (7.3ms) Completed 200 OK in 156ms (Views: 120.7ms | ActiveRecord: 3.1ms)
但是,当我在没有模板的情况下render json: @ride.as_json
,并执行render json: @ride.as_json
调用时,事情按预期工作。 当我创建一个新的应用程序并尝试做同样的事情时,一切都按预期工作:
Started GET "/posts/1.json" Processing by PostsController#show as JSON Post Load (0.1ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", "1"]] Rendered posts/show.json.jbuilder (0.6ms) Completed 200 OK in 20ms (Views: 19.2ms | ActiveRecord: 0.1ms)
我不知道我对我的应用程序做了什么,它没有正确渲染模板。 有任何想法吗?
天哪,我花了两天时间才发现造成这个问题的问题是我的布局/应用程序文件名为aplication.haml
。
现在,当我想使用Builder for xml或Rabl for json等模板引擎时,它尝试在layouts/application.haml
文件的yield字段中呈现模板,从而将html作为JSON返回
我发现问题出在application.haml
文件中
将它命名为application.html.haml解决了这个问题……