【问题标题】:HAML prevents template engines to render anything else than HTMLHAML 阻止模板引擎呈现 HTML 以外的任何内容
【发布时间】:2012-05-03 04:18:29
【问题描述】:

我正在使用 Jbuilder(我也尝试使用 Rabl)来渲染 json。 当我尝试在我的应用程序中呈现 jbuilder 模板时,它呈现 layouts/application 文件中的模板并以 JSON 形式返回 HTML(请参阅“在 layouts/application 内”行):

Rides controller on 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)

但是,当我在没有模板的情况下渲染 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)

我不知道我对我的应用程序做了什么,它没有呈现 模板正确。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails json haml rabl jbuilder


    【解决方案1】:

    天哪,我花了大约两天时间才发现导致此问题的问题是 我的布局/应用程序文件名为 aplication.haml

    现在,当我想使用 Builder for xml 或 Rabl for json 之类的模板引擎时,它会尝试在 layouts/application.haml 文件的 yield 字段中呈现模板,从而将 html 作为 JSON 返回

    我发现问题出在application.haml 文件中

    将其命名为 application.html.haml 解决了问题...

    【讨论】:

    • 哇,我也遇到了同样的问题!我试图在没有运气的情况下实现 Jbuilder,切换到 RABL 并拥有相同的程序。将 application.haml 重命名为 application.html.haml 就成功了!谢谢。
    • 赞成。这解决了我的问题,并花了几个小时才找到这个帖子。
    • 赞成。这解决了我的问题,并花了几个小时才找到这个帖子。
    • 感谢分享解决方案,我们遇到了同样的问题。花了几个小时才找到您的帖子。
    • 谢谢,即使在 3 年后也帮助了我!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2021-04-29
    相关资源
    最近更新 更多