万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1

    nickel.rsでdata渡さずそのままテンプレート

    例えばindex.tplを使いたい時。 ルーティング

    router.get("/", index);

    として、

    fn index<'a>(req: &mut Request, res: Response<'a>) -> MiddlewareResult<'a> {
        let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap();
        let mut data = HashMap::<&str, String>::new();
        return res.render("app/movie/views/index.tpl", &data);
    }

    としてたが、空のデータ送るのは冗長。

    他の方法

    send_fileメソッドに変えればよい。

    fn index<'a>(req: &mut Request, mut res: Response<'a>) -> MiddlewareResult<'a> {
        let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap();
        res.set(MediaType::Html);
        res.send_file("app/movie/views/index.tpl")
    }

    のように、MediaType のヘッダをつけたり、 ※以下のようにMediaTypeのインポート必須

    use nickel::{Nickel, Request, Response, HttpRouter, MiddlewareResult, MediaType,
        StaticFilesHandler,JsonBody};

    setしてるのでミュータブルにするためにmut resにしたりでできた。