4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ancestryの表示方法

Last updated at Posted at 2020-04-12

ancestryの使い方は見かけますが、表示のさせ方はなかったので備忘録として投稿いたします。

ancestryについてはこちらの記事でご確認ください。
https://atora1992.hatenablog.com/entry/2019/07/08/215444

作成の都合上、viewファイルはhamlで記述しております。

今回はカテゴリーをこの様に表示をさせたい場合です。
9f27f649a8d79dd1afa5b238f6efa2ed.png

まずは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


こちらで表示が完了です。
今回、表示までの内容ですので、リンク先は未記載です。
ご了承ください。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?