我的应用程序中有这条路线:
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两次路由?
答案 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")">