【问题标题】:Why is ERB not executing in Rails view spec?为什么 ERB 不在 Rails 视图规范中执行?
【发布时间】:2025-12-12 13:20:09
【问题描述】:

我正在尝试让一些 ERB 在视图规范中执行。

我有一个视图规范来测试一些简单的 ERB 逻辑。 这是视图文件:

<!DOCTYPE html>
<html>
  <body>
    <%= puts 'hello world' %>
  </body>
</html>

在我的规范中,我有这样的期望:

expect(response.body).to include('hello')

但是,规范并未执行 ERB。 正文返回了一些内容,但 &lt;body&gt;&lt;/body&gt; 的内部没有任何内容。

任何想法如何让 ERB 代码执行? 这可能是一个配置问题。 这个规范是 Rails 引擎的一部分(如果有帮助就分享一下)。

在本地运行服务器时,执行ERB并出现“hello world”。 试图弄清楚如何让 RSpec 执行 ERB。

【问题讨论】:

  • 如果您从 &lt;%= puts 'hello world' %&gt; 更改为 &lt;%= 'hello world' %&gt; 会发生什么?

标签: ruby-on-rails rspec


【解决方案1】:

&lt;%= %&gt; 这会计算表达式并将返回值附加到它的位置。在你的情况下,里面的表达式是puts("hello world"),它将返回nil

所以在执行后nil 被附加到body 标记内。为此,将其更改为

<!DOCTYPE html>
<html>
  <body>
    <%= 'hello world' %>
  </body>
</html>

【讨论】:

    最近更新 更多