我试图从一个框中检索所有项目的数据,一个框可以有隔间并且我想要在框级别获得所有隔间信息。项目是多形的,因为盒子不一定有隔间。Rails:从嵌套模型中检索多态数据
模型
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
VIEW
<% @items.each do |item| %>
<%= item.name %>
<% end %>
但如果我再尝试
@itemable = @box.compartments
OR
@itemable = @box.compartments.find(:all)
我得到的错误
undefined method `items' for #<ActiveRecord::Array>
OR
undefined method `items' for #<ActiveRecord::Relation>
任何人都可以从所有舱室获得返回结果帮助吗?
可能你需要使用'.itemables',按':as =>:itemable'? – pdoherty926
您是否在可编程和隔间类中定义了“belongs_to”? – megas
@megas项目是多态的,所以在Compartments中我有:has_many:items,:as =>:itemable太 – ritchielee