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 に答える