显示多对多关系中的价值

时间:2012-06-22 14:32:41

标签: ruby-on-rails rails-activerecord entity-relationship

我试图显示多对多关系中的值

在我的视图中我呼吁以下

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

2 个答案:

答案 0 :(得分:0)

当你进行has_and_belongs_to_many关系时,你假设n个模型有n个模型。因此,当您执行schedule.opponents时,您正在检索Opponent模型的对象和数组,因此,您无法调用该模型的属性。
查看问题的简单方法是在控制台上键入:

schedule.opponents.last.name

答案 1 :(得分:0)

当您执行schedule.opponents时,您将获得属于schedule的所有对手的数组。根据您的数据,该数组可能包含零个,一个或多个元素。

试试这个:

<% @opponents = schedule.opponents %>
<% @opponents.each do |opponent| %>
  <%= opponent.name %><br />
<% end %>
祝你好运!