【发布时间】:2017-03-17 06:36:28
【问题描述】:
在我看来,导致问题的相关代码似乎是这样的:
<input type="checkbox" id=<%= "#{a[0]}#{ndx}" -%> class="toggle" />
<label for=<%= "#{a[0]}#{ndx}" -%> class="popup-label">
这会在 Heroku 日志中引发以下错误:
SyntaxError - /app/views/index.erb:25: syntax error, unexpected ')'
2017-03-17T06:30:26.877056+00:00 app[web.1]: ...buf.concat(( "#{a[0]}#{ndx}" -).to_s); @_out_buf.concat " cl...
2017-03-17T06:30:26.877061+00:00 app[web.1]: /app/views/index.erb:26: syntax error, unexpected ')'
2017-03-17T06:30:26.877057+00:00 app[web.1]: ... ^
2017-03-17T06:30:26.877061+00:00 app[web.1]: ...buf.concat(( "#{a[0]}#{ndx}" -).to_s); @_out_buf.concat " cl...
我最初认为这可能是使用 WEBrick 和 Puma 之间的区别,但我交换了它们并发现没有区别。有什么建议吗?
【问题讨论】:
-
ERB 错误消息中的行号不一定指向错误所在的行。但是到 ERB 注意到结构无效的那一行。在该行之前发现了语法错误本身(在这种情况下可能是一个孤立的
()。请发布您的完整视图。请说明您使用的是哪种 ERB 实现。 -
我不确定我是否理解。您所说的“ERB 的实施方式”是什么意思?此外,语法错误显然是由 erb 语句结束时的 - 引起的。
-
在我看来,您在本地和服务器上运行不同版本的 gems。你在用
bundler吗? -
ERB是某种定义或语言,如何使用<% %>标签从 Ruby 生成 HTML。ERB有不同的实现:来自 Ruby 标准库的原始版本,但也有像 Erubis、Erubi 这样更快的替代方案,但行为可能略有不同。尤其是 Erubis 和 Erubis 不需要-%>中的减号。当您在开发和生产中使用不同的实现时,这可能说明您在一个环境中遇到错误,而在另一个环境中却没有。 -
@froderik -- 我正在使用捆绑程序。 Gem 版本是相同的,不确定错误中的其他含义。