これは本当に私を悩ませています-インクルードなどで関連付けを正しく設定することはできないようです。問題のモデルは次のとおりです。
class Category < ActiveRecord::Base
has_many :subcategories
has_many :locations, :through => :subcategories
end
class Location < ActiveRecord::Base
has_many :subcategories
has_many :category, :through => :subcategories
end
class Subcategory < ActiveRecord::Base
belongs_to :category
belongs_to :location
end
次の構造で出力する必要があります。
Category.name
Location.name
Subcategory.name
Subcategory.name
Subcategory.name
(subcategory from another sub category)
コントローラ:
class SubcategoriesController < ApplicationController
def index
@categories = Category.all(:include => [:locations => :subcategories], :group
=>"subcategories.name")
end
意見:
<div class="categorylist">
<ul>
<%= @categories.each do |category|%>
<h3>
<%=h link_to category.name, category %>
</h3>
<%= category.locations.each do |location|%>
<h6>
<%= link_to location.name, location %>
</h6>
<%= location.subcategories.each do |subcategory|%>
<p>
<%= link_to subcategory.name, subcategory%>
</p>
<% end %>
<% end %>
<% end %>
</ul>
</div>
私が欲しいのは:
Fruit
France
apple
granny smith
fig
India
pineapple
banana
Meat
India
cow
chicken
-------------
What I am currently getting:
Fruit
India
cow
chicken
banana
pineapple
つまり、場所とカテゴリではなく、場所のみに基づいてサブカテゴリを取得しています。
サブカテゴリがカテゴリと場所の両方に依存するサブカテゴリレベルに達すると、問題が発生します。これらは他のモデルの1つだけに属しているように見えますが、私の場合は両方に属している必要があります。私はこれを正しく理解できないようです。私はこれを行うために多くの方法を試しましたが、正しく行っているかどうかさえわかりません。
誰かが私を正しい方向に向けることができることを願っています。
よろしくお願いしますクリスチャン