一个诡异的模板函数定义问题

模板kevin893 次浏览

几个月前的一个项目,昨天更新到服务器后,生产模式报错:

ERROR 2014/07/17 09:39:44 template.go:299: Template compilation error (In AutoReply/KeywordsForm.html around line 21):
function "eqis" not defined

错误很明确,模板函数 eqis 未定义,感觉很奇怪,一直正常的程序,怎么突然出现这个问题?

启动开发模式调试,运行正常,居然没有报错,

代码如下,看了看,没有发现什么不妥:

func init() {
	revel.OnAppStart(Init)

	revel.InterceptFunc(checkUser, revel.BEFORE, new(Admin))
}

func Init() {
	avatarPath = revel.BasePath + "/public/avatar/%d/%s"

	revel.TemplateFuncs["eqis"] = func(a int64, b string) bool {
		s := strconv.FormatInt(a, 10)
		return s == b
}

翻了翻上次提交,发现这部分有改动,checkout之后,程序正常了,原来自定义模板函数只能放到 init函数 中,

func init() {
	revel.OnAppStart(Init)

	revel.TemplateFuncs["eqis"] = func(a int64, b string) bool {
		s := strconv.FormatInt(a, 10)
		return s == b
	}

	revel.InterceptFunc(checkUser, revel.BEFORE, new(Admin))
}

func Init() {
	avatarPath = revel.BasePath + "/public/avatar/%d/%s"
}

 

共0个回复