JCm
JCm

Reputation: 1989

Meteor Template.myTemplate.helpers not rendering output

I am new to meteor and i am wondering why is it myTemplate.helper is not rendering its supposed output when i started putting these files in my /client/template directory. These are the following files:

/clinent/template/body.html:

<body>
    <div class="row">
        <div class="col-xs-12">
            <div class="list-group">
            {{#each projects}}
                {{> projectList}}
            {{/each}}
            </div>
        </div>
    </div>
</body>

/client/template/body.js:

Project = new Mongo.Collection("project");

if (Meteor.isClient) {

Template.body.helpers({
    projects: function(){
        var projects = Project.find({});

        return projects;
    }
});

};

/client/template/templates.html:

<template name="projectList">
<a href="#" id="{{id}}" class="list-group-item {{#if active}} active {{/if}}">
    {{name}}
    <i class="glyphicon glyphicon-trash pull-right del"></i>
</a>
</template>

However it is rendering the ouptut properly when i put body.html and body.js at the root / directory.

Upvotes: 0

Views: 314

Answers (2)

Bernard Hamann
Bernard Hamann

Reputation: 1

I think it will work if you use

Template.projectList.helpers

instead of

Template.body.helpers

When the helper is for a template then you have to put the template name and not body.

Upvotes: 0

Dabrorius
Dabrorius

Reputation: 1039

I think I know what the problem is.

Project = new Mongo.Collection("project");

Should be available to both client and server, when you move body.js to client folder it is automatically served only to client, and it breaks the app.

Try following structure:

/client/template/body.js:

Template.body.helpers({
    projects: function(){
        var projects = Project.find({});

        return projects;
    }
});

/collections.js

Project = new Mongo.Collection("project");

Note that you don't need if(Meteor.isClient) when creating files inside client folder.

Upvotes: 1

Related Questions