0

У меня есть запись & Категория Модель:Получить ассоциации в AngularJS и Rails с использованием ngResource

class Record < ActiveRecord::Base 
    belongs_to :category 
end 

class Category < ActiveRecord::Base 
    has_many :records 
end 

Категория модель имеет поле в имя, которое должно быть использовано для отображения. Я использую нг-повтор для отображения записей, то «record.category.name» заставляет мою страницу сломать:

<tr ng-repeat="record in records"> 
    <td>{{record.category.name)}}</td> 
    <td>{{record.description}}</td> 
    <td>{{record.created_at | date:'medium'}}</td> 
</tr> 

Как правильно извлечение «record.category» так, что Поле «имя» доступно, как указано выше? Использование ngResource пока не заполнило ассоциации.

Я извлекая записи модели с использованием ngResource:

  var Record = $resource('/records/:recordId', { 
       recordId:'@id', 
       format: 'json' 
      }, { 
       'save': { 
        method: 'PUT' 
       }, 
       'create': { 
        method: 'POST' 
       } 
      }); 

      Record.query({ 
        account_id: $routeParams.accountId 
      }, function(results) { 
        return $scope.records = results; 
      }); 

Как я могу восстановить эту модель в AngularJS, так что данные ассоциации доступны для отображения, а?

Любая помощь приветствуется.

Edit:

index.json.jbuilder

json.array! @records, partial: 'record', as: :record 

_record.json.jbuilder

json.(record, :id, :account_id, :user_id, :amount, :date, :description, :is_expense, :category_id, include: [:category]) 

ответ

0

Это на самом деле не Угловая проблема, это Rails (и дизайн API). Причина, по которой я говорю, заключается в том, что дизайн API объясняется тем, что в зависимости от варианта использования клиент может получить более эффективную выборку для всех категорий и выполнять работу в интерфейсе, чтобы соответствовать категориям записей. Тем не менее, чтобы сделать то, что вы пытаетесь сделать, вам нужно будет изменить свой Rails app.

Модифицированный код из связанного ответа:

def show 
    @record = Record.find(params[:id]) 
    respond_to do |format| 
    format.json { render :json => @record.to_json(:include => :category) } 
    end 
end 

назад, когда я делал Rails вы могли бы сделать :include в find вызова, но я не сделал Rails для некоторого времени. Я не знаю, все ли это лучший способ сделать это.