2016-07-13 16 views
1

でのレンダリングではない私はこれをラベル付けするかどうかはわかりませんが、私は持っている問題は、このです。ルートファイル、レイアウト、ビューがあります。 ページタイトルページの説明を以下のコードを使用してレイアウトに渡そうとしています。エクスプレスEJSレイアウト:res.locals私はエクスプレス4</p> <p>で<a href="https://github.com/Soarez/express-ejs-layouts" rel="nofollow">Express EJS Layouts</a>モジュールを使用していレイアウト

ルート

router.get('/', function(req, res, next) { 

    res.locals.meta = { 
    title: 'Page Title', 
    description: 'Page Description' 
    }; 

    res.render('pages/index', { 
    header: 'Page Header' 
    }); 
}); 

レイアウト

<!DOCTYPE html> 
<html dir="ltr" lang="en" class="no-js"> 
<head> 
    <title><%= meta.title %></title> 
    <meta name="description" content="<%= meta.description %>"> 
</head> 
<body> 
    <%- body %> 
</body> 
</html> 

ビュー

<h1 class="page-title"><%= header %></h1> 

ヘッダーが表示されますが、ページタイトルページの説明がありません。 res.locals.metaオブジェクトに他のアイテムを追加し、それらをビュー内で参照すると、レンダリングされますが、レイアウトからは何も表示されません。

私は間違っていますか?

すべてのサポートをよろしくお願いいたします。

答えて

1

フィールドmetaする必要がありますに関係なく常にthe option to extract meta tagsを設定する、express-ejs-layoutに設定されていました。

これはfixedになりました。この問題を解決するには、express-ejs-layoutの最新バージョンに更新してください。

1

ノードサーバーを再起動して、これらのアイテムを追加した後でページを更新しようとしましたか?また、ビューでレイアウトを拡張していますか?

私はexpress-ejs-layoutsを使って、新しいレイアウトでデフォルトのレイアウトファイルを継承できると仮定しています。そうであれば、新しいビューは親レイアウトを継承する(すなわち拡張する)。

としてあなたが親のレイアウトを設定する必要がありますように見えます:あなたは、その後のような特定のコンテンツビューを呼び出し、自動的にそのビューを継承する

app.set('view engine', 'ejs') 
app.set('layout', 'myLayout') // defaults to 'layout' 

app.get('/', function(req, res){ 
    res.render('aView', { layout: 'someSpecificLayout' }) 
}) 

私の推測では、どちらかということです

  1. ファイルがに存在しないため、ビューの継承はありません。 210 app.set('layout', 'myLayout')


又は

親タグが適切に使用されていない
  • それは次のように設定されているため、ヘッダは、それが必要としてレンダリングさ
  • 応答変数。someSpecificLayoutのタグは<%- contentFor('meta.title') %>ようにする必要がありますし、親のレイアウトmyLayout<%= meta.title %>

    +0

    はいサーバーを再起動しました。 「あなたの視点でレイアウトを拡張する」ことが何を意味するのか分かりませんか? –

    +0

    @JonnyHaynesあなたの質問に答えて私の答えを編集しました。 –

    +0

    あなたの努力のおかげで@unseen_damage。私はそのすべてをやっていました。開発者が固定していたNodeモジュールの問題がありました。http://stackoverflow.com/a/38386739/207738 –

    関連する問題