0

ソース: github

新たにインスタンス化された mongoose.model を expressjs のrender関数に渡そうとすると、次のエラーが表示されます: "ReferenceError: jade is not defined"

コントローラ...

var mongoose = require("mongoose")
  , Client = mongoose.model("Client")

exports.new = function (req, res) {
    res.render("clients/new", {
        headline: "New Client",
        client: new Client({})
    })
}

client: new Client()また、インスタンス化されたオブジェクトを var に格納し、それを変更せずに最終的なレンダー オブジェクトに渡すことも試しました。ビットを削除するnew Client({})と 500 エラーを回避できますが、目前の問題は解決しません。

いくつかの構成...

app.set("views", __dirname + "/app/views")
app.set("view engine", "jade")

モデル...

var mongoose = require("mongoose")
  , Schema = mongoose.Schema

var Client = new Schema({
    company: { type: String },
    contact: {
        name: { type: String },
        phone: { type: String },
        email: { type: String }
    },
    created: { type: Date, default: Date.now }
})

mongoose.model("Client", Client)

Node v0.8.12
Express >= v3.0.0
Mongoose v3.3.1
Jade v0.27.6

ソース: github

4

1 に答える 1

4

この問題は明らかに、jade テンプレート エンジン内のキーワードの衝突が原因です。

問題の説明が興味深いので、自分で試してみました。jade テンプレートの変数識別子clientを変更しmyclient、新しいマングースClientモデル インスタンスを渡すと、すべてが正常に機能しました。

app/controllers/clients_controller 内:

...
res.render("clients/new", {
    headline: "New Client",
    myclient: new Client({company: 'Foo Company'})
})
...

ビュー/クライアント/新規:

...
input(type='text',name='company',placeholder='Company',value='#{myclient.company}')
...

私はあなたのレポジトリをフォークし、それらの変更をコミットし、プル リクエストを送信しました (何よりもまず、私は比較的 git に慣れていないため、あらゆる機会を利用してさらに基本を学びます)。

于 2012-10-24T10:29:56.890 に答える