gpt4 book ai didi

routes - Play Framework 。路线。错误: "not enough arguments for method at..."

转载 作者:行者123 更新时间:2023-12-01 22:47:54 25 4
gpt4 key购买 nike

这是我的路线。第二个已评论。

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

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

( 我想要的是: 使位于 "/public/partials" 文件夹内的 html 文件可通过网络访问,与它的方式相同为 Assets 而制作)

一旦我取消注释第二行 - 它将因这一行而出现错误(来 self 的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.

问:出了什么问题?

更新:

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

只需再添加一个映射即可使我的网址更短。

当我需要从 JS 部分访问这些内容时,这是有意义的,就像将两个应用程序合二为一(1.play 一个,2.js 一个),也有路由,两个根。对于 JS 来说,我假设我已经在/public (或 Assets 中) - 这是 js 应用程序的根。

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

最佳答案

来自play docs :

公共(public) Assets 的反向路由

对于路由文件中映射的任何 Controller ,都会在 controllers.routes.Assets 中创建一个反向 Controller 。您可以使用它来反转获取公共(public)资源所需的 URL。例如,从模板:

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

这将产生以下结果:

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

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

但是,如果您为 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/*file 路由

关于routes - Play Framework 。路线。错误: "not enough arguments for method at...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com