Шаблон Ember не показывает никаких данных

Я только начинаю с Ember.js и использую рельсы на задней части. Проблема в том, что я получаю список элементов, но в моем шаблоне не отображаются данные.

router.js.coffee

App.Router.map (match)->
# match('/').to('index')
   @resource "stories"

stories_route.js.coffee

App.StoriesRoute = Ember.Route.extend
model: -> 
    App.Story.find()

stories.handlebars

<h1>Stories</h1>

<ul>
{{#each story in controller}}
      <li>{{story.title}} A</li>
{{else}}
      <li>There are no stories.</li>
{{/each}}
</ul>

{{outlet}}

Вот JSON, который я получаю от Rails:

{
   "stories":[
      {
         "story":{
            "id":1,
            "title":"Test",
            "description":"This is a test story"
         }
      }
   ]
}

Редактировать:

Я могу получить правильный шаблон для рендеринга, просто данные пустые.

Вот как выглядит HTML:

<div id="ember295" class="ember-view">
   <h1>Stories</h1>
   <ul>
   <script id="metamorph-2-start" type="text/x-placeholder">
   </script>
   <script id="metamorph-4-start" type="text/x-placeholder">
   </script>
      <li>
         <script id="metamorph-5-start" type="text/x-placeholder">
         </script>
         <script id="metamorph-5-end" type="text/x-placeholder">
         </script>
         A
      </li>
    <script id="metamorph-4-end" type="text/x-placeholder">
    </script>
    <script id="metamorph-2-end" type="text/x-placeholder">
    </script>
  </ul>
  <script id="metamorph-3-start" type="text/x-placeholder">
  </script>
  <script id="metamorph-3-end" type="text/x-placeholder"></script>
</div>

1 ответ

Решение

Если stories ваш первый маршрут и доступен на "/" тогда вы можете определить путь как:

App.Router.map () ->
  @resource('stories', {path: '/'})

ИЛИ вы можете определить индексный маршрут и перенаправить оттуда как:

App.IndexRoute = Ember.Route.extend
  redirect: ->
    @transitionTo('stories')

Смотрите здесь рабочий jsbin, который показывает вторую концепцию.

РЕДАКТИРОВАТЬ

Я полагаю, ваша проблема заключается в том, что если ваш результат содержит набор записей, вам нужно удалить дополнительные story уровень в вашем JSON, в результате чего-то вроде:

{
  "stories":[
    {
      "id":1,
      "title":"Test",
      "description":"This is a test story"
    }
  ]
}

и для одной записи, например /stories/123 Ваш JSON должен выглядеть так:

{
  "id":1,
  "title":"Test",
  "description":"This is a test story"
}

Надеюсь, поможет

Другие вопросы по тегам