0

: Ember Rails 0.18.2 および ember-source 1.12.1 を使用

奇妙な機能を持つ Ember アプリを継承しました。私は Ember を初めて使用するので、これは正常なのかもしれませんが、奇妙だと思います。

3 つのモデルがあります。

  1. 両親
  2. ゲーム
  3. コメント

保護者がゲームを表示すると、URL は次のようになります。

/<parent slug>/games/<game_id>

(スラッグは、親の一意の ID です)。

この URL には、次のコードを含むテンプレートがあります。

  {{#unless commentsOpen}}
  {{#link-to 'comments' class="Button easyButton"}}Chat with parents in your pod{{/link-to}}
  {{/unless}}

  {{outlet}}

上記のボタンをクリックすると、URL が次のように変更されます。

/<parent slug>/games/<game_id>/comments

次に、そのゲームのすべてのコメントが表示されます。

ビューからそのボタンを削除し、ゲームごとに自動的にコメントを表示する必要があります。

API は Rails であり、既に API エンドポイントを変更して、Game が (オブジェクトの埋め込み配列として) 要求されると同時にすべてのコメントを返すことができます。

しかし、{{outlet}} を何に置き換えるのでしょうか? 私の理解では、 {{outlet}} は次のルートによりコメント テンプレートに委任されています。

App.CommentsRoute = Ember.Route.extend
  model: ->
    return this.store.find('comment', {
      game:   @modelFor('game').get('id')
      parent: @modelFor('parent').get('slug')
    }).then( (models) -> models.toArray() )

そのルートを削除し、コメントを Game モデル内の埋め込みオブジェクトにする必要があると思います。次に、アウトレットを次のようなものに置き換えますか?

{{#each comment in Game}}

<div class="commentItem">
  <div class="commentItem-author">{{comment.parent_name}}</div>
  <div class="commentItem-body">{{comment.body}}</div>
</div>

{{each}}

編集

これはルーターです:

App.Router.map(function() {
  this.route('index', {
    path: '/'
  });
  return this.resource('parent', {
    path: '/:parent_id'
  }, function() {
    this.resource('games', {
      path: '/games'
    });
    return this.resource('game', {
      path: '/game/:game_id'
    }, function() {
      return this.resource('comments', {
        path: '/comments'
      });
    });
  });
});
4

2 に答える 2

1

現在のアプリがあり、おそらくどこかに好きなゲームのリストがあるとしましょう:

{{#each games as |game|}}
  <li>
    {{#link-to 'game' game}}
       {{game.title}}
    {{/link-to}}
  </li>
{{/each}}

次のようにリンク先を変更することで、コメント付きでゲームに直接ルーティングできるはずです。

{{#link-to 'games.game.comments' game}}

ここに詳細な解決策があるひねりがあります

于 2016-04-28T13:27:21.263 に答える
0

ゲーム内にコメントを埋め込むことが答えです。次に、ビューは次のようになります。

{{#each comment in model.comments}}

<div class="commentItem">
    <div class="commentItem-author">{{comment.parent_name}}</div>
    <div class="commentItem-body">{{comment.body}}</div>
</div>

{{/each}}
于 2016-04-29T14:10:43.783 に答える