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

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

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

这是我正在执行的代码:

 template = <<-TEMPLATE  Lorem Ipsum  TEMPLATE ERB.new(template).result 

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

如何使用字符串中的field_set_for帮助程序将模板输出

Lorem Ipsum

“正常”Eruby不允许使用<%=表达式来阻止Rails使用它们的方式。 Rails 扩展了Erubis Eruby处理程序以增加对它们的支持 。 您的测试只是直接使用Erb,因此无法使用此支持。

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

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

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