2013-11-23 49 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

相關問題