从字符串编译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
帮助程序将模板输出
?
“正常”Eruby不允许使用<%=
表达式来阻止Rails使用它们的方式。 Rails 扩展了Erubis Eruby处理程序以增加对它们的支持 。 您的测试只是直接使用Erb,因此无法使用此支持。
您需要确保加载此支持才能使其正常工作。 我可以得到它:
ActionView::Template::Handlers::Erubis.new(template).evaluate(ActionView::Base.new)
我不知道这是不是最好的方法。 检查RSpec文档,可能有更好的方法来测试这样的部分视图。