2015-04-05 97 views
0

我試圖使用鐵路由器路由到當前用戶的配置文件頁面,但'pathFor'Spacebars幫助程序未傳遞標籤的href屬性。如何使用鐵路路由器在Meteor中創建簡單的userProfile路由

這是我的模板:

<div class="collapse navbar-collapse" id="navigation"> 
    <ul class="nav navbar-nav"> 
    {{#if currentUser}} 
     <li><a href="{{pathFor 'requestSubmit'}}">Submit Request</a></li> 
     <li><a href="{{pathFor 'userProfile'}}">View Profile</a></li> 
    {{/if}} 
    </ul> 
    <ul class="nav navbar-nav navbar-right"> 
    {{> loginButtons}} 
    </ul> 
</div> 

爲提交請求按鈕href是傳遞得很好,但由於某些原因,查看資料href是沒有得到傳入

我的路由器。 JS如下:

Router.route('/users/:_id', { 
    name: 'userProfile', 
    data: function() { 
    return Meteor.users.findOne(this.params._id); 
    } 
}); 

在我的應用程序,我路由到一個「請求」頁面做

(我創建了一個名爲集合請求)
Router.route('/requests/:_id, { 
    name: 'requestPage', 
    data: function() { 
    return Requests.findOne(this.params._id); 
    } 
}); 

這將正確路由到來自Requests集合的單個請求,所以我很困惑爲什麼userProfile路由不會執行相同的操作。

而且,我試圖通過創建模板點擊事件,迫使此功能:

Template.header.events({ 
    'click .userProfile': function(e) { 
    e.preventDefault(); 

    var user = Meteor.user(); 

    Router.go('userProfile', {_id: user._id}); 
    } 
}); 

..和這個傳遞正確的HREF中的模板。

任何幫助,將不勝感激!

回答

1

userProfile路由需要參數id。當您在僅包含路由名稱的模板中調用pathFor時,它將嘗試從當前上下文中提取參數。由於上下文不是用戶(這是一個請求?),最終會產生無效的路徑。

您可以設置上下文在線:

<li><a href="{{pathFor 'userProfile' data=currentUser}}">View Profile</a></li> 

或者,你可以設置環境中使用with通話之外:

{{#with currentUser}} 
    <li><a href="{{pathFor 'userProfile'}}">View Profile</a></li> 
{{/with}} 
+0

謝謝!那就是訣竅。 – 2015-04-05 22:20:51