0

我正在尝试从一个盒子中检索所有项目的数据,一个盒子可以有隔间,我想在盒子级别获取所有隔间信息。物品是多态的,因为盒子不一定有隔间。

模型

class Box < ActiveRecord::Base
  has_many :compartments
  has_many :items, :as => :itemable
end

在我的控制器中,我可以通过以下方式获得结果:

@box = Box.find(params[:id])

@itemable = @box.compartments.first

@itemable = @box.compartments.last

看法

<% @items.each do |item| %>
<%= item.name %>
<% end %>

但如果我再试试

@itemable = @box.compartments

或者

@itemable = @box.compartments.find(:all)

我得到错误

undefined method `items' for #<ActiveRecord::Array>

或者

undefined method `items' for #<ActiveRecord::Relation>

任何人都可以帮助从所有隔间获取结果吗?

4

1 回答 1

0

所以在隔间里你有

belongs_to :box
has_many :items, :as => :itemable

是这样吗? @box.compartments应该返回一组隔间对吗?听起来好像是被某种items方式调用了@box.compartments

于 2012-09-18T01:57:23.720 回答