在播放模板中定义scala函数

在播放模板中定义scala函数,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我尝试在播放视图模板中使用函数 @active(path: String):String = @{ var active:String = "" if (request.path.startsWith(path)) { active = "class=\"active\"" } return active } <div class="container-fluid"> .... <li @

我尝试在播放视图模板中使用函数

@active(path: String):String = @{
       var active:String = ""
       if (request.path.startsWith(path)) {
           active = "class=\"active\""
       } 
       return active
}

<div class="container-fluid">
....
    <li @active("/page") ...>
@活动(路径:字符串):字符串=@{
var-active:String=“”
if(request.path.startsWith(path)){
active=“class=\”active“”
} 
返回活动
}
....


播放编译器说它找不到激活的值。这里出了什么问题?

尝试删除函数的返回类型,并将其移动到模板顶部。这适用于我的模板(另请参见:):


首先,第二个@符号是不必要的。其次,您是否在自己的文件中定义了@active函数并/或导入了它?我现在将其移动到了自己的文件中。像这样就行了。这也没关系,因为我在其他文件中也需要它。@korefn:事实上,第二个@符号告诉Play,这是Play文档所称的“纯”(即Scala)代码块,而不是HTML模板的一部分。如果他省略了@,函数将以文本形式返回“var-active:String…etc”。
@active(path: String) = @{
  if (request.path.startsWith(path))
    "class=\"active\""
  else
    ""
}