Отношения Ember и Rails «один ко многим»

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

Вот что у меня есть.

Я пробовал разные маршруты и разное вложение ресурсов, а также рендерил разные вещи в контроллерах рельсов. Я могу вернуть хэш правильных оценок, но не знаю, как его отобразить.

Я предполагаю, что что-то не так в моих контроллерах rails или что-то, что мне нужно сделать в представлениях Handlebars. Я пробовал так много вещей, что даже не публиковал свои рельсы. Если этот материал Ember верен, как правильно отобразить это с помощью руля и контроллера рельсов.

App.Router.reopen
  location: 'history'
  rootURL: '/'

App.Router.map ->
  @resource 'users', ->
    @route 'new',
@route 'edit',
      path: '/:user_id/edit'
    @route 'show',
      path: '/:user_id'
  @resource 'locations', ->
    @route 'new',
    @route 'show',
      path: '/:location_id'
  @resource 'ratings', ->
    @route 'new',
    @route 'show',
      path: '/:ratings_id'

App.Rating = DS.Model.extend(
  rating: DS.attr('string', defaultValue: "-0")
  description: DS.attr('string', defaultValue: "No Description Provided")
  location: DS.belongsTo("App.Location")
  )

App.Location = DS.Model.extend(
  name: DS.attr('string', defaultValue: "")
  address:  DS.attr('string', defaultValue: "")
  city: DS.attr('string', defaultValue: "")
  state:DS.attr('string', defaultValue: "")
  ratings: DS.hasMany('App.Rating')
  fullAddress: (->
    "http://maps.google.com/?q=#{@get('address')},#{@get('city')},#{@get('state')}}"
  ).property('address')
)


App.Store = DS.Store.extend(
  revision: 11
  adapter: DS.RESTAdapter.create(mappings:
    ratings: App.Rating
  )
)

person Garrett Boone    schedule 21.07.2013    source источник


Ответы (1)


Трудно сказать без шаблона, маршрутов или контроллеров.

Поскольку у вас есть отношение между моделями, способ ссылки на него в вашем шаблоне будет location.ratings, где местоположение будет переменной в вашем #each. Это работает очень хорошо. Если вы загрузили рейтинги, вы сразу же получите к ним доступ. Или сделает запрос на получение этих оценок с сервера.

Другая основная идея ссылки на данные из разных контроллеров заключается в использовании needs API.

needs: 'foo',
ratingsBinding: 'controllers.foo'
person Darshan Sawardekar    schedule 21.07.2013