玩框架。路线。错误:“方法的参数不够......”

时间:2013-11-23 23:03:02

标签: routes playframework-2.1

有我的路线。第二个是评论。

GET         /assets/*file       controllers.Assets.at(path="/public", file)

#GET         /partials/*file    controllers.Assets.at(path="/public/partials", file)

我想要的是:使我位于"/public/partials"文件夹中的html文件可以通过网络获取,与assets的方式相同

只要我取消注释第二行 - 由于此行(来自我的index.scala.html)就会出错:

<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">

错误就像这里:

  

方法的参数不够:(路径:字符串,文件:   字符串)play.api.mvc.Call。未指定的值参数文件。

问:出了什么问题?

更新

另一个词:我希望通过提供该映射来缩短我的网址。否则我必须使用此网址:'assets/partials/welcome.html'而不是那个(我想使用):'partials/welcome.html'

还有一个映射可以缩短我的网址。

当我需要从JS部分到达那些时,它就像有两个应用程序在一个(1.play one,2.js one),有路由,两个根。对于JS,我假设我已经在/ public(或在资产中) - 这是js应用程序的根目录。

我想知道为什么它不起作用。

1 个答案:

答案 0 :(得分:10)

来自play docs

公共资产的反向路由

对于路径文件中映射的任何控制器,在controllers.routes.Assets中创建了一个反向控制器。您可以使用它来反转获取公共资源所需的URL。例如,从模板:

<script src="@routes.Assets.at("javascripts/jquery.js")"></script>

这将产生以下结果:

<script src="/assets/javascripts/jquery.js"></script>

请注意,当我们撤消路线时,我们不会指定第一个folder参数。这是因为我们的routes文件为Assets.at操作定义了一个映射,其中folder参数是固定的。所以它不需要明确指定。

但是,如果为Assets.at操作定义了两个映射,如下所示:

GET  /javascripts/*file        controllers.Assets.at(path="/public/javascripts", file)
GET  /images/*file             controllers.Assets.at(path="/public/images", file)

然后,您需要在使用反向路由器时指定这两个参数:

<script src="@routes.Assets.at("/public/javascripts", "jquery.js")"></script>
<image src="@routes.Assets.at("/public/images", "logo.png")">

public / partials目录中的任何静态html都可以在/assets/partials/someHtml.html上公开获取。严格来说,您不需要/ partials / *文件路径