2

我正在尝试制作一个根据路线表现不同的标签,但是当我尝试在一个@{ ... }块中呈现 html 时,我似乎无法正确插入我的变量。

@(route: String, on_image: String, off_image: String, alt_text: String)

@{
    val Pattern = ("(" + route + ".*)").r
    val path = request().path()


    path match {
        case Pattern(foo) => {
            if(path != route && route == "/") {
                <script type="text/javascript">
                    alert("{route}");
                </script>
            } else {
                <script type="text/javascript">
                    alert("{route}");
                </script>           
            }
        }
        case _ => {
            <script type="text/javascript">
                alert("{route}");
            </script>       
        }
    }
}

当我加载页面时,我的 Firebug 控制台中出现语法错误,其中显示脚本标记的内容评估为:

alert(&quot;/accounts&quot;);

现在,我已经尝试过像@Html{ ... }and @Html( ... )and@Html({ ... })围绕整个街区的事情。我也尝试过alert(@Html("{bar}"));其他类似的事情,但一切都会产生各种错误。

这样做的正确方法是什么?

编辑

更新以显示为简单起见尝试仅使用一个变量,并显示该变量的来源。

4

1 回答 1

1

用一点间接解决。

@(route: String, on_image: String, off_image: String, alt_text: String)

@on = {
    <a href="@route"><img src="@routes.Assets.at(on_image)" alt="@alt_text" /></a>
}

@off = {
    <a href="@route"><img src="@routes.Assets.at(off_image)" alt="@alt_text" /></a>
}

@{
    val Pattern = ("(" + route + ".*)").r
    val path = request().path()


    path match {
        case Pattern(foo) => {
            if(path != route && route == "/") {
                {off}
            } else {
                {on}    
            }
        }
        case _ => {
            {off}       
        }
    }
}
于 2012-05-18T20:41:30.143 回答