我正在尝试创建一个包含用户,订单和餐饮的餐厅经理应用。用户有很多订单,订单有很多餐。我想要一张表格,列出用户的所有订单以及用餐情况。名称和价格。我有三个模型:User
,Order
和Meal
。虽然从这个循环中访问order_id
不是问题:
- @userOrders.each do |order|
%tr
%td= order.id
当我尝试通过
访问用餐的名字时- @userOrders.each do |order|
%tr
%td= order.id
%td= order.meals.name
这是我得到的:
Table with what's supposes to be meals' names
在Ruby控制台中,当我输入user.orders[1].meals
时,我得到:
这是我的orders_controller.rb
def index
user_id = current_user.id
@userOrders = Order.where(:user_id => user_id)
end
以下是我的order.rb
:
class Order < ApplicationRecord
belongs_to :user
has_many :meals
end
user.rb
:
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :orders
end
和meal.rb
:
class Meal < ApplicationRecord
belongs_to :order
end
答案 0 :(得分:4)
订单有很多餐。许多餐点都不能只有一个名字。这就是你要用order.meals.name
做的事情。每餐都有自己的名字。也可以吃饭。像这样:
- orders.each do |order|
- order.meals.each do |meal|
= meal.name