我正在为我的视图助手(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 文档,可能有更好的方法来测试这样的部分视图。