Leaf & Vapor 3 - Не удается загрузить css и изображения на просмотре - PullRequest
1 голос
/ 21 февраля 2020

Я очень новичок в Vapor и бэкэнд логи c в целом. Я создаю простое веб-приложение с помощью Leaf и пытаюсь прочитать данные из базы данных psql и отобразить их на странице html / css (leaf). Проблема в том, что когда я передаю свои параметры на страницу, он не загружает css и изображения.

Это функция в моем контроллере

my project configuration:

App
├── Package.swift
├── Resources
│   ├── Views
│   │   └── index.leaf
├── Public
│   ├── images (images resources)
│   ├── styles (css resources)
└── Sources
    ├── App
         ├── Controllers
         │        └── PoesiaController.swift
         ├── Models
               └── Poesia.swift

final class PoesiaController {

func createView(_ req: Request) throws -> Future<View> {
        let id: Int = try req.parameters.next(Int.self)
        return Poesia.find(id, on: req).unwrap(or: NSError(domain: "errore", code: 1, userInfo: nil)).flatMap(to: View.self) { p in
            return try req.view().render("index", ["title": p.title, "content":p.content])
        }
    }

}

, и я создал маршрут как

let poesieController = PoesiaController()
router.get("poesia", Int.parameter, use: poesieController.createView)

, когда я запускаю страницу с правильными данными, но нет css или загружены изображения.

мой файл index.leaf

image

странно то, что если я создаю маршрут для отображения страницы без переменных или вне сопоставления объектов, он показывает нормально.

 router.get("index") {req -> Future<View> in
        return try req.view().render("index")
    }

ОБНОВЛЕНИЕ: Я обнаружил, что проблема заключается в отображении листовой страницы в вызове с параметрами. Если я пытаюсь отобразить страницу, используя маршрут без параметров, это работает, но если я делаю то же самое внутри маршрута с параметрами, он не загружает css и изображения.

1 Ответ

1 голос
/ 22 февраля 2020

Ваша проблема в том, что вы пропустили / в начале href в теге <link>. Это должно быть:

<link rel="stylesheet" href="/styles/poesie.css">

Пропуск '/' означает, что путь относится к URL. Вот почему это работает для вашей страницы индекса, а не для других. Если поместить его, он будет рассматриваться как абсолютный путь.

...