错误:在revel模板中“无效的比较类型”

时间:2017-05-12 17:43:28

标签: templates go revel

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

  revel run revel_app or dev

发现模板执行错误

:执行“footer.html”at:error call eq:invalid type for comparison。

  {{if eq .RunMode "dev"}}

  {{template "debug.html" .}}

  {{end}}
 </body>

</html>

3 个答案:

答案 0 :(得分:2)

这个问题似乎可以回答,但仍有很多遗漏。首先,问题是不完整的。什么是错误?我猜我们在运行模板解析器/执行器时.RunMode丢失了。 golang模板没有最佳实践,但是,这是在模板过载和不维护变量字典时的常见问题。

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

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

这样,如果没有为.RunMode分配值(无例外)或空字符串,则eq将使用"default"值。将此视为“ C”中的简写

这是一个夸大的例子。

a := runmode!=null?runmode:default

答案 1 :(得分:0)

eq的一个参数在当前上下文中未定义或者不是&#34;基本类型&#34;时,会出现错误。 (see the last paragraph of this section

因此假设footer.html是&#34; pratial&#34;与使用模板操作调用页脚模板的其他模板相关联的模板您需要确保传递给模板调用的上下文包含.RunMode值且值为一个基本类型

答案 2 :(得分:0)

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

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