ancestryの使い方は見かけますが、表示のさせ方はなかったので備忘録として投稿いたします。
ancestryについてはこちらの記事でご確認ください。
https://atora1992.hatenablog.com/entry/2019/07/08/215444
作成の都合上、viewファイルはhamlで記述しております。
まずはcontrollerを記載します。
productテーブルから商品情報を取得、
その後にcategoryテーブルより親要素を取得します。
省略
def show
@product = Product.find(params[:id])
@parents = Category.where(ancestry:nil)
end
省略
private
def product_params
params.require(:product)
end
end
こちらがviewファイルになります。
@parentsをeachで分けていきます。
そしてproductテーブルのcategories_idとcategoryテーブルのidが一致する場合、表示させる様に記述します。
//親要素だけの場合
- @parents.each do |parent|
-if @product.categories_id == parent.id
= link_to '#' do
= parent.name
%br
//子要素までの場合
- parent.children.each do |child|
-if @product.categories_id == child.id
= link_to '#' do
= parent.name
%br
= link_to '#' do
= child.name
%br
//孫要素までの場合
- child.children.each do |grandchild|
-if @product.categories_id == grandchild.id
= link_to '#' do
= parent.name
%br
= link_to '#' do
= child.name
%br
= link_to '#' do
= grandchild.name
%br
こちらで表示が完了です。
今回、表示までの内容ですので、リンク先は未記載です。
ご了承ください。