如何在视图中显示(Angular)关联的模型数据(来自Rails)

时间:2016-02-25 17:45:55

标签: ruby-on-rails angularjs

表达式关联数据存在问题。我有订单和父母模型用餐。用餐有一个订单。订单包括:用餐和状态的ID。 order.status显示正确,但order.meal.name没有。这是我的rails控制器:

def index
  respond_with current_user.orders
end

通过这种方式,我尝试在Angular中显示数据:

 <tbody ng-repeat="order in orders | orderBy: '-cost' | filter:activeOrder">
    <tr>
      <td>{{order.id}}</td>
      <td>{{order.meal.name}}</td>
      <td>{{order.meal.cost}}</td>
      <td>{{order.status}}</td>
    </tr>
  </tbody>
  </table>

在Angular中创建订单:

orders.create({
  meal_id: $scope.meal.id,
  status: "ordered",
});

在Rails中创建:

def create
    order = meal.create_order(order_params.merge(user_id: current_user.id))
    respond_with order
end

这段代码有什么问题?

2 个答案:

答案 0 :(得分:0)

 def index
  temp_array = Array.new
  current_user.orders.each do |order|
  temp_hash = Hash.new
  temp_hash[:order] = order
  temp_hash[:meal] = order.meal
  temp_array << temp_hash
  end

   respond_with temp_array.to_json
 end


<tbody ng-repeat="order in orders | orderBy: '-cost' | filter:activeOrder">
<tr>
  <td>{{order.order.id}}</td>
  <td>{{order.meal.name}}</td>
  <td>{{order.meal.cost}}</td>
  <td>{{order.status}}</td>
</tr>

Angular无法访问模型关联,因此您手动将值传递给show

答案 1 :(得分:0)

订单模型中,我写了这段代码:

def as_json(options = {})
  super(options.merge(include: :meal))
end

现在它正在运作!