2015-10-25 2 views
3

Я написал свое первое приложение Go с Martini. У меня есть маршрут с именем параметра:Мартини маршруты с именованным параметром не удается загрузить статические файлы

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' и другие)

ответ

2

Ссылки в предоставленном 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> 
+0

Bingo! Вы абсолютно прав, спасибо! –

+0

Пожалуйста, обратите внимание на upvote! –