Мартини Маршруты с указанным параметром не удается загрузить статические файлы

Я написал свое первое приложение Go с Мартини. У меня есть маршрут с именованным параметром:

m := martini.Classic()

staticOptions := martini.StaticOptions{Prefix: "assets"}
m.Use(martini.Static("assets", staticOptions))

m.Get("/edit/:id", editHandler)
m.Run()

EditHandler отображает шаблон редактирования с таблицей стилей начальной загрузки и сценарием, которые находятся в assets/css а также assets/js папки соответственно.

<link rel="stylesheet" type="text/css" href="assets/css/bootstrap.min.css">
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>

Но когда я открываю страницу редактирования в моем браузере, мои статические файлы не загружаются, потому что браузер делает запросы edit/assets/css/bootstrap.min.css а также edit/assets/js/bootstrap.min.js, Как я могу удалить любой префикс маршрута?('Edit', 'show' и другие)

1 ответ

Решение

Ссылки в предоставленном вами фрагменте HTML являются относительными ссылками. Это означает, что когда браузер разрешает URL, он добавляет указанный путь к текущему хосту и пути, т.е. http://<hostname_and_port>/edit + assets/css/bootstrap.min.css,

Вы можете использовать корневой путь вместо относительного пути, чтобы гарантировать, что когда браузер разрешает URL-адреса, он добавляет указанный путь к корню хоста, независимо от того, какой полный путь URL. Это делается путем добавления косой черты в начале вашего пути. В следующем примере я добавил косую черту к src а также href пути атрибутов.

<link rel="stylesheet" type="text/css" href="/assets/css/bootstrap.min.css">
<script type="text/javascript" src="/assets/js/bootstrap.min.js"></script>
Другие вопросы по тегам