在Play Framework 2中使用多个资产路由

时间:2014-08-09 10:32:50

标签: playframework routes playframework-2.0 assets

我的应用程序中有这条路线:

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

我在scala模板中使用了反向路由,它运行正常:

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

但是当我为图像添加这条路线时:

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

我在scala模板中遇到以下错误:

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

我不能在Play Framework 2中使用controllers.Assets.at两次路由?

1 个答案:

答案 0 :(得分:5)

正如documentation中所述,我相信您可以为您的资产添加一条或多条路线。

以下是我认为你错过的重要部分:

  

此操作将查找文件并提供服务(如果存在)。

     

注意,如果您在“public”之外定义资产映射,则需要   告诉某人,例如如果你想:

GET  /assets/*file               Assets.at("public", file)
GET  /liabilities/*file          Assets.at("foo", file)
  

你应该把它添加到Build.scala:

playAssetsDirectories <+= baseDirectory / "foo"

这是使用反向路由:

  

但是,如果为Assets.at操作定义两个映射,例如   这样:

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

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

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

修改

尝试将您的CSS链接更改为:

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