0

我试图显示一个多对多关系的值

在我看来,我打电话给以下

schedule.opponents.name

此代码未显示任何错误,尽管它仅显示“对手”一词

在我有belongs_to关系的其他方法上,这个方法似乎已经显示了我所追求的值

有小费吗?

class Opponent < ActiveRecord::Base
  has_many  :schedules
  has_many  :teams
  attr_accessible :name
end


class Schedule < ActiveRecord::Base
  has_and_belongs_to_many :opponents
  has_many :teams
  attr_accessible :location_id, :date, :opponent_id, :time, :for, :against, :event, :team, :home_or_away
4

2 回答 2

0

当你做一个has_and_belongs_to_manyrelashionship 时,你假设有 n 个模型到 n 个模型。因此,当您执行 a 时schedule.opponents,您正在检索Opponent模型对象的数组,因此,您不能调用该模型的属性。
查看问题的一种简单方法是在控制台上键入:

schedule.opponents.last.name
于 2012-06-22T14:36:45.957 回答
0

当你这样做时schedule.opponents,你将得到一个包含所有对手的数组schedule。根据您的数据,该数组可能有零个、一个或多个元素。

试试这个:

<% @opponents = schedule.opponents %>
<% @opponents.each do |opponent| %>
  <%= opponent.name %><br />
<% end %>

祝你好运!

于 2012-06-22T14:41:22.400 回答