2012-05-30 47 views
0

如果我理解,我可以在使用Jade時將模板的某些部分移動到父模板?節點JS - 在Jade中擴展布局時出錯

我嘗試將鏈接移動到某些js文件頭部分,我只使用網站的一部分,但出現錯誤。

我layout.jade:

!!! 
html(lang='en') 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/box.css') 
    block scripts 
    body 
    .. 

我index.jade(只是爲了嘗試,它會在其他文件)

extends layout 

block scripts 
    script(src='myscriptfile.js') 
div#sortable 
    .. 

節點服務器的某些部分:

app.get('/', function(req, res){ 
    res.render('index', 
    {title: 'My title', 
    images: images} 
); 
}); 

我將此選項切換爲真/假

app.set('view options', { pretty: true }); 

,但仍得到一個錯誤:

Express 
500 ReferenceError: E:\projekt/views/index.jade:13 11| 12| > 13| 14| body is not defined 

我在做什麼錯?

+0

由於某種原因,我記得身體在layout.jade中爲!= body。你嘗試過嗎? – Hacknightly

回答

2

在您的代碼段的..中,您引用了一個尚未定義的body變量。我猜圍繞線13 index.jade

500 ReferenceError: E:\projekt/views/index.jade:13 11| 12| > 13| 14| ... 

你要麼必須從視圖中刪除,或視圖中的數據進行定義:

res.render('index', 
    {title: 'My title', 
    images: images, 
    body: '...'} 
); 

旁註:

如果您尚未升級到Express 3.x,則可能需要確保禁用佈局:

app.set('view options', { 
    layout: false, 
    pretty: true 
}); 

繼承和塊是meant to replace layouts,不適用於他們。如Migrating from 2.x to 3.x所述:

Removed... the concept of a "layout" (template engine specific now)