Error: "invalid type for comparison" in revel template

Error: "invalid type for comparison" in revel template

创建多个自定义端点后 footer.html,我最终得到了这个错误,因为不明显这不会影响应用程序的功能,只是让我很烦。 尝试过:

  revel run revel_app or dev

Revel 模板执行错误

:执行 "footer.html" 时:调用 eq 时出错:比较类型无效。

  {{if eq .RunMode "dev"}}

  {{template "debug.html" .}}

  {{end}}
 </body>

</html>

eq 的参数之一在当前上下文中未定义或不是 "basic type" (see the last paragraph of this section)

时,就会出现您看到的错误

因此假设 footer.html 是一个 "pratial" 模板,它与使用 模板操作 调用页脚模板的其他模板关联,您需要确保传递给模板调用的上下文包含 .RunMode 值并且该值属于 基本类型 .

虽然这个问题似乎得到了回答,但仍有很多遗漏。首先问题不完整......错误是什么?我猜我们在模板 parser/executor 为 运行 时缺少 .RunMode。 golang 模板没有最佳实践,但是,在重载模板和不维护变量字典时,这是一个常见问题。

我倾向于部署的一个策略是:

{{if eq (or .RunMode "default") "dev"}}

这样,如果 .RunMode 未分配值(无异常)或空字符串,则 eq 将使用 "default" 值。将其视为 shorthand 中的 'C'

这是一个夸张的例子。

a := runmode!=null?runmode:default

您正在将“字符串”与未知类型的变量 .RunMode 进行比较。将该变量转换为字符串怎么样?

{{if eq (.RunMode | toString) "dev"}}