2016-11-24 10 views
0

ユーザーのユーザー名でルートを作成する際に問題があります。ですから、アイデアは次のようなものです:パスをクリックしてそのユーザーのプロファイルに移動します。彼のリンクは次のようなものでなければなりません:http://www.something.com/usersUsername 私はこれについてインターネットで見つけたすべてを試してみましたが、多くのものが変更されたため、これを管理できませんでした。 私が有用なのは、ページがクライアントをロードしたときに、 "パスを最初に見てから、コレクションにサブスクライブするので、パスに" null "があることだけです。どんな助け?鉄流星:URLがuserNameのルータ?

:ルータアカウント-UIアカウント・パスワード

ここでは、コードで私の考えは...購読のためにwaitOnに何かを作成するために

パッケージですスタートページ、テンプレート:

<template name="početna"> 
<h1>Dobrodošli!</h1> 
<h3>Registrujte se:</h3> 
    {{> register}} 
<h3>Prijavite se:</h3> 
    {{> login}} 

{{#if currentUser}} 
    <h2>Logovan si!</h2> 
    {{> logout}} 
    <a href="{{pathFor route='profil' username=username }}">Profil</a> 
{{/if}} 

ルータJSファイル:Seのみに

Router.configure({ 
    layoutTemplate: 'okvir' 
}); 

// * * * * * * // 

Router.route('/', { 
    name: 'početna', 
    template: 'početna', 
}); 

Router.route('/:username', { 
    waitOn: function(){ 
     return Meteor.subscribe('userData'), Meteor.user().username 
      },  
    name: 'profil', 
    template: 'profil', 

}); 

シンプルなHTMLテンプレートファイルは、それが動作するかどうか:

<template name="profil">  
    <h1>RADI</h1> 
</template> 

ありがとう!

Router.route('/:username',{ 
    name: 'profil', 
    waitOn: function() { 
     return Meteor.subscribe('userData', this.params.username) 
    }, 

    action: function() { 
     this.render('profil', { 
      data: function() { 
       return Meteor.users.findOne({username: this.params.username}); 
      } 
     }); 
    } 
}); 

EDIT:あなたが行く

+0

を公開? 'waitOn'や' username'の中の 'Meteor.user()。username'の値は' template'の中ではnullですか? – Khang

+0

waitOnコンソールを追加する前に、waitOnの中にnullが残っていましたが、なぜ私はユーザー名にnullがついているのか、これを修正する方法はわかりません... –

答えて

0

ルナ、助けてくれてありがとう!ルナの答えは助けたが、私はまた、必要に応じて: 1)ヘルパー名

Template["početna"].helpers({ username: function() { return Meteor.user().username } }) 

2 =ユーザ名の値を設定するために)正確にあなたが直面している問題は何ですか

Meteor.publish("userData", (username) => { 
    return Meteor.users.find({ 
     username: username 
    }) 
}); 
0

ここ

this.params.usernameでは、誰もがそのプロファイル、ユーザーかどうかを訪問できるようになります。それを防止したい場合は、onBeforeAction()

onBeforeAction: function() { 
    if(Meteor.user() && this.params.username == Meteor.user().username){ 
     this.next(); 
    } else { 
     Router.go('/not-authorized') //or any other route 
    } 
}, 
+0

まだhttp:// localhost:3000/null: ..新しいだけ今私はページの "Loading ..."を見ることです。 –

関連する問題