2013-11-23 48 views
6

有我的路线。第二个评论。Play框架。路线。错误:“没有足够的方法参数...”

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")"> 

错误是喜欢这里:

not enough arguments for method at: (path: String, file: String)play.api.mvc.Call. Unspecified value parameter file.

问:怎么了?

UPDATE:

换句话说:我要让我的网址缩短通过提供映射。否则,我必须使用这个网址:'assets/partials/welcome.html'而不是那个(我想要使用):'partials/welcome.html'

只有一个映射,这将使我的网站更短。

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

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

回答

10

play docs

公共资产

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

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

这将产生以下结果:

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

需要注意的是,当我们回程路线,我们没有指定第一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")"> 

公共/谐音目录的任何静态HTML将公布于/资产/partials/someHtml.html。所以严格来说,你不需要/ partials/*文件路径

+0

我知道,但我想通过提供该映射使我的网址更短。否则,我必须使用这个URL:'assets/partials/welcome.html'而不是那个:'partials/welcome.html'。再一个映射会让我的网站更短。当我需要从JS部分获得这些内容时,它是有意义的,就像在一个应用程序中有两个应用程序(1.play one,2. js one),还有两个路径。对于JS,我假设我已经在/ public(或资产) - 这是js应用程序的根。我想知道为什么它不起作用。 – ses

+1

也许你已经清楚了,但是如果你为Assets.at动作定义了第二个映射,那么在使用反向路由器时你需要指定路径参数。这是因为路径现在不明确。因此,不必使用@ routes.Assets.at(“stylesheets/main.css”),而必须使用@ routes.Assets.at(“/ public”,“stylesheets/main.css”) – mantithetical

+0

是的。我懂了。我最好使用一个路由定义,并且会在URL中增加一个单词,而不是将多个参数放到每个资源网址中。 – ses

相关问题