2017-01-02 9 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;

任意のアイデアを開始する...報告しますか?あなたのルータにStencilTemplateEngineを追加する必要が

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

。例えば:

import KituraStencil 

router.setDefault(templateEngine: StencilTemplateEngine()) 

または

import KituraStencil 

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

私はそのようによくやったと付け加えている必要があります。実際、私の "/"ルートはうまく動作します。それは同じ機能を使用します。 – Hartix

+0

'forums.stencil'ファイルが' Views'ディレクトリにあることを確認してください。また、 'Logger'を作成してログにエラーメッセージが表示されましたか?ロガーを作成するには、 'main.swift'に' LoggerAPI'をインポートし、 'HeliumLogger'をインポートし、' Log.logger = HeliumLogger() 'ステートメントを追加します。 –

+0

forum.stencilはViewsディレクトリにあります。また、HeliumLoggerを実行しています。ログに記録されるのは、[2017-01-02T05:17:45.534Z] [VERBOSE] [HTTPIncomingMessage.swift:335 onHeadersComplete(method:versionMajor:versionMinor :)]のHTTP要求の送信元は172.17.0.1です。 proto = http; – Hartix

関連する問題