0
私の手をノードのところで試してみましたが、EJSテンプレートを取得して非常に基本的なデータを表示できません。私は2つのコントローラを持っています - 1つは基本的なホーム/約/連絡先用で、もう1つは投稿用です。私が/ postsに行ったとき、正しいページがレンダリングされますが、そのデータはなく、 "postsは定義されていません"というエラーが表示されます。しかし、なぜこれが当てはまるのか分かりません。乾杯。EJS変数定義の問題
var express = require('express');
var router = express.Router();
var posts = [{
id: 0,
title: "This is an example post.",
author: "Tony",
content: "This is some content for a post"
}];
router.get('/', function(req, res) {
res.render("posts/index");
});
router.get('/new', function(req, res) {
res.send("NEW");
});
router.get('/:id', function(req, res) {
res.send("SHOW");
});
router.post('/', function(req, res) {
res.send("CREATE");
});
router.get('/:id/edit', function(req, res) {
res.send("EDIT");
});
router.put('/:id', function(req, res) {
res.send("UPDATE");
});
router.delete('/:id', function(req, res) {
res.send("DELETE");
});
module.exports = router;
とHTML:
<!DOCTYPE html>
<html>
<head>
<title>Posts</title>
</head>
<body>
<h1>hello</h1>
<nav>
<ul>
<li><a href="/posts">Posts</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<%= posts %>
<% for(var i=0; i < posts.length; i++) { %>
<%= posts[i].id %>
<h2><%= posts[i].title %></h2>
<h4><%= posts[i].author %></h4>
<p><%= posts[i].content %></p>
<% } %>
<button><a href="/posts/new">New</a></button>
</body>
</html>
とはapp.js
それがためにレンダリングされていたときにあなたがページにposts
変数を渡すことを確認する必要があり
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var port = process.env.PORT || 3000;
var router = require("./config/routes");
var posts = require("./config/posts");
// Set the view directory to /views
app.set("views", __dirname + "/views");
// Let's use the Express templating language
app.set("view engine", "ejs");
// Setup public folder to serve static files
app.use(express.static(__dirname + "/public"));
// Setup app to parse req.body
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/', router);
app.use('/posts', posts);
app.listen(port);