【问题标题】:Compiled HAML code not as expected编译的 HAML 代码与预期不符
【发布时间】:2014-12-14 03:22:51
【问题描述】:

我正在探索使用 HAML 作为 ERB 的替代方案,以潜在地解决我目前在 Rails 4 测试中遇到的这个问题:Error compiling ERB code from string

我正在执行以下代码:

template = 
"= field_set_tag do\n" + 
"    Lorem Ipsum"

expected = '<fieldset>Lorem Ipsum</fieldset>'
actual = Haml::Engine.new(template).render(ActionView::Base.new).gsub("\n", '')    

expect(actual).to eq(expected)

我的测试结果是:

Failure/Error: expect(actual).to eq(expected)

  expected: "<fieldset>Lorem Ipsum</fieldset>"
       got: "Lorem Ipsum<fieldset></fieldset>"

为什么“Lorem Ipsum”块会在字段集标记之前呈现?更重要的是,我怎样才能让它正确渲染?

【问题讨论】:

  • 你不是在Lorem Ipsum 行缺少打印标志= 吗?它应该是`= Lorem Ipsum`
  • 不,它是 HAML,所以一行纯文本应该呈现为纯文本。

标签: ruby-on-rails rspec haml


【解决方案1】:

您没有正确设置 Haml 以在 Rails 中使用。 Haml 提供了自己的一些 Rails 方法的实现,包括field_set_tag 使用的capture。由于没有加载这个方法,原来的capture正在运行,块直接输出到缓冲区,但没有被捕获。

解决方案可能就像添加 require 'haml/template' 一样简单,但您可能应该检查 RSpec 文档并确保您以正确的方式使用 Rails,我认为应该自动加载 haml/template

【讨论】:

    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多