ruby-on-rails - 从字符串编译 ERB 代码时出错

标签 ruby-on-rails rspec erb

我正在为我的 View 助手 (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 "\n\t\...
  ...                               ^
  (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,但得出了类似的结果。

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

最佳答案

“普通”Eruby 不允许使用 <%= 的表达式以 Rails 使用它们的方式阻止。 rails extends the Erubis Eruby handler to add support for them .您的测试只是尝试直接使用 Erb,因此不提供此支持。

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

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

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

关于ruby-on-rails - 从字符串编译 ERB 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27465389/

相关文章:

jquery - 使用 Kaminari gem 进行 Ajax 分页

ruby-on-rails - 生产中的 Rails edit gem

ruby-on-rails - Ransack 将结果导出到 CSV

ruby-on-rails - 文件上传字段导致 ActionController::InvalidAuthenticityToken 异常

ruby-on-rails - 工厂女孩,关联默认特征,但在特征通过时不关联

ruby-on-rails - 为什么在 Fixnum 上调用时 `from_now` 是错误的?

css - 将两个 div 彼此对齐?铁轨

ruby-on-rails-3 - RSpec 和 Mongoid 与 rails-api

ruby - 如何使用 RSpec 在 Controller 中实例化实例变量

puppet - erb 文件中的转义字符