2013-11-09 7 views
5

私は何か間違っている必要がありますが、私は見ることができません...コントローラ/モデルをsails generate controller productsで作成し、ファイル/controllers/ProductsControllerセイルで動作しないカスタムビュー/アクション/コントローラJS

index: function(req, res) { 

    return res.view({ 
     myOne: 'World?', 
     myvar: 'hello???', 
     title: 'Yeap' 
    }) 

}, 

と私はlocalhostのチェック:1337 /製品変数はテンプレート内に印刷されて確実に十分なようなindexアクション。私はカスタムビューを追加しておらず、テンプレートファイルはviews/products/index.jade(EJSではなくJadeを使用しています)にあります。私のような/config/routesにカスタムビューを作成する場合は:

'/custom': { 

    view: 'custom', 
    controller: 'ProductsController', 
    action: 'customAction' 

} 

と私のProductsControllerに私は前述のように非常によく似た作用を有する:

customAction: function(req, res) { 

    return res.view({ 
     myOne: 'Hello?', 
     myvar: 'World???', 
     title: 'Yeap' 
    }) 

}, 

変数が私のテンプレートには印刷されません。テンプレートはかなりいいと言われていますので、コントローラとアクションです(そうそうです)。誰も私が間違っていることを説明することはできますか?

+0

あなたはどこにあなたのビューを配置しましたか - custom.jadeですか? – JohnGalt

+0

私はビューフォルダに追加しました。どのディレクトリにもありません。しかし、エラーがビューが見つからなかった場合は、エラーは異なります。ビューは正常にレンダリングされましたが、データは渡されませんでした。 – WagnerMatosUK

答えて

8

あなたがそれにアクセスしたい場合は、経由して、あなたの行動customAction.jadeと同じ名前のビューを命名間の選択肢があります。

index: function(req, res) { 

    return res.view({ 
    myOne: 'World?', 
    myvar: 'hello???', 
    title: 'Yeap' 
    }) 

}, 

またはあなたがして、同じビュー/テンプレート(例えばindex.jade)にアクセスすることができますこの構文を使用して:

customAction: function(req, res) { 

    return res.view('products/index', { 
    myOne: 'World?', 
    myvar: 'hello???', 
    title: 'Yeap' 
    }) 

}, 

私はEJS hereを使用して作業レポを持っています。

+0

どのように私はクライアントサイドのJavaScriptにそれらを得ることができます。現在、私はそれらを隠しdivタグに置き、jqueryを使用してそれらを引っ張っています。賢い方法がありますか? –

+0

@VampireCoderそれはあなたがそれをどのように使いたいかによって異なります。あなたはテンプレートエンジンでそれを得ることができます(オブジェクトがテンプレート内でループすることができる投稿のリストの場合)。しかし、あなたのクライアント側のjs内でそれを使うつもりなら、残念ながら、jQueryを使って言いましたように、またはajaxを呼び出すことができます(しかし、それはかなり変化しています)。 – WagnerMatosUK

関連する問題