从字符串编译 ERB 代码时出错



我正在为我的视图助手(Rails 4.0)编写一些测试,并尝试在执行它的字符串中编译ERB代码。但是,为了简单起见,我在这里使用在 rails 表单助手中找到的常用方法并收到相同的错误:

Failure/Error: ERB.new(template).result
SyntaxError:
  (erb):1: syntax error, unexpected ')'
  ...out.concat(( field_set_tag do ).to_s); _erbout.concat "nt...
  ...                               ^
  (erb):4: syntax error, unexpected end-of-input, expecting ')'
  ; _erbout.force_encoding(__ENCODING__)
                                        ^

这是我正在执行的代码:

template = <<-TEMPLATE
<%= field_set_tag do %>
    Lorem Ipsum
<% end %>
TEMPLATE
ERB.new(template).result

我发现了一些使用 <% 而不是 <%= 的建议,但这导致Lorem Ipsum是唯一的输出。我也尝试过使用 HAML 而不是 ERB,但结果相似。

如何使用字符串中的field_set_for帮助程序让我的模板输出<fieldset>Lorem Ipsum</fieldset>

"

Normal" Eruby不允许使用<%=的表达式像Rails使用它们一样具有块。Rails 扩展了 Erubis Eruby 处理程序以添加对它们的支持。您的测试只是直接使用 Erb,因此此支持不可用。

您需要确保加载此支持才能正常工作。我可以让它使用它:

ActionView::Template::Handlers::Erubis.new(template).evaluate(ActionView::Base.new)

我不知道这是否是最好的方法。查看 RSpec 文档,可能有更好的方法来测试这样的部分视图。

相关内容

  • 没有找到相关文章

最新更新