为啥 ERB 不在 Rails 视图规范中执行?
Posted
技术标签:
【中文标题】为啥 ERB 不在 Rails 视图规范中执行?【英文标题】:Why is ERB not executing in Rails view spec?为什么 ERB 不在 Rails 视图规范中执行? 【发布时间】:2022-01-13 21:01:33 【问题描述】:我正在尝试让一些 ERB 在视图规范中执行。
我有一个视图规范来测试一些简单的 ERB 逻辑。 这是视图文件:
<!DOCTYPE html>
<html>
<body>
<%= puts 'hello world' %>
</body>
</html>
在我的规范中,我有这样的期望:
expect(response.body).to include('hello')
但是,规范并未执行 ERB。
正文返回了一些内容,但 <body></body>
的内部没有任何内容。
任何想法如何让 ERB 代码执行? 这可能是一个配置问题。 这个规范是 Rails 引擎的一部分(如果有帮助就分享一下)。
在本地运行服务器时,执行ERB并出现“hello world”。 试图弄清楚如何让 RSpec 执行 ERB。
【问题讨论】:
如果您从<%= puts 'hello world' %>
更改为 <%= 'hello world' %>
会发生什么?
【参考方案1】:
<%= %>
这会计算表达式并将返回值附加到它的位置。在你的情况下,里面的表达式是puts("hello world")
,它将返回nil
。
所以在执行后nil
被附加到body
标记内。为此,将其更改为
<!DOCTYPE html>
<html>
<body>
<%= 'hello world' %>
</body>
</html>
【讨论】:
以上是关于为啥 ERB 不在 Rails 视图规范中执行?的主要内容,如果未能解决你的问题,请参考以下文章
Rails 6.0.4 远程:true 不在浏览器中 js/ajax 渲染 _partial.html.erb
$ 未在 Rails 应用程序中使用 Webpack 2 的 .js.erb 视图中定义