2017-01-02 49 views
1

我正在使用模板。在下面的方法中,由於標記線返回零,因此失敗。這是Paul Hudson的Kitura書(第208頁)。我有模板文件,一切都很酷。在呈現響應中找到nill

我已經導入KituraStencil添加了模板引擎(router.add(templateEngine:StencilTemplateEngine()))。我在我的「/」路線中使用了相同的功能,它工作得很好。

HeliumLogger只報告.. [2017-01-02T05:17:45.534Z] [VERBOSE] [HTTPIncomingMessage.swift:335 onHeadersComplete(method:versionMajor:versionMinor:)] HTTP request from=172.17.0.1; proto=http;

任何想法從哪裏開始?

router.get("/forum/:forumid") { 
request, response, next in 

guard let forumID = request.parameters["forumid"] else { 
    send(error: "Missing forum ID", code: .badRequest, to: response) 
    return 
} 

database.retrieve(forumID) { forum, error in 
    if let error = error { 
     send(error: error.localizedDescription, code: .notFound, to: response) 
    } else if let forum = forum { 
     database.queryByView("forum_posts", ofDesign: "forum", usingParameters: [.keys([forumID as Database.KeyType]), .descending(true)]) { messages, error in 
      defer { next() } 

      if let error = error { 
       send(error: error.localizedDescription, code: .internalServerError, to: response) 
      } else if let messages = messages { 
       var pageContext = context(for: request) 
       pageContext["forum_id"] = forum["_id"].stringValue 
       pageContext["forum_name"] = forum["name"].stringValue 
       pageContext["messages"] = messages["rows"].arrayObject 


       //THIS LINE RETURNS Nil 
       _ = try? response.render("forum", context: pageContext) 

      } 
     } 
    } 
} 

}

回答

2

您必須添加StencilTemplateEngine到路由器。例如: -

import KituraStencil 

router.setDefault(templateEngine: StencilTemplateEngine()) 

import KituraStencil 

router.add(templateEngine: StencilTemplateEngine()) 
+0

我應該補充說,我這樣做也是如此。事實上,我的「/」路線工作得很好。它使用相同的功能。 – Hartix

+0

確保你在'Views'目錄下有'forum.stencil'文件。另外,你是否創建了一個'Logger'並在日誌中看到任何錯誤消息?要創建一個記錄器,添加'import LoggerAPI','導入HeliumLogger'和'Log.logger = HeliumLogger()'語句到你的'main.swift'。 –

+0

forum.stencil位於Views目錄中。還運行HeliumLogger。唯一的日誌是[2017-01-02T05:17:45.534Z] [VERBOSE] [HTTPIncomingMessage.swift:335 onHeadersComplete(method:versionMajor:versionMinor :)]來自= 172.17.0.1的HTTP請求;原= HTTP; – Hartix