[Rails] 상품 일람을 다차원적으로 분류해서 보여주는 과정은요.

6104 단어 JavaScriptRails

전제 조건


이하의 일은 끝났다.끝나지 않으면 기능이 정확한지 확인하기 어렵다.
・ancestry를 사용하여 분류표를 작성한다.
・분류:상품=1:여러 가지 관계가 있다.
· 분류는 3개 등급으로 나뉘는데, 각각의 명칭은 각각 '부모', '자', '손' 이다
・상품모델 카테고리id에서 최하층의 분류 id가 등록됩니다.
・gem kaminari 설치
· 분류 컨트롤러 파일 제작 및 분류 가능한 코드가 적혀 있다.
불안하신 분들은 여기를 눌러주세요.
다음 코드를 썼으면 문제없습니다.


품목별 상품 일람 표시


분류의 상세함을 보고 싶어서 show 동작을 사용합니다.

Show 작업 정의

app/controllers/categories_controller.rb
before_action :set_category, only: :show

def show
  @items = @category.set_items
  @items = @items.where(buyer_id: nil).order("created_at DESC").page(params[:page]).per(9)
end

private
def set_category
  @category = Category.find(params[:id])
end

모델 메소드 정의

app/models/category.rb
has_many :items
has_ancestry

def set_items
  # 親カテゴリーだった場合
  if self.root?
    start_id = self.indirects.first.id
    end_id = self.indirects.last.id
    items = Item.where(category_id: start_id..end_id)
    return items

    # 子カテゴリーだった場合
  elsif self.has_children?
    start_id = self.children.first.id
    end_id = self.children.last.id
    items = Item.where(category_id: start_id..end_id)
    return items

    # 孫カテゴリーだった場合
  else
    return self.items
  end
end
@items = @category.items로만 기술됨
상품 모델 categoryid가 최하층의 id를 부여받았기 때문입니다.손자의 경우에만 정보를 얻을 수 있다.
따라서 상술한 바와 같이 부모인지 자식인지 손자인지 구분하는 조건은 순조롭게 진행될 것이다

app/views/categories/show.html.haml
.items-container
  .items-index
    .title
      = "#{@category.name}の商品一覧"
      .title__border
    - if @items
      %ul.lists
        = render "items/item", items: @items
    = paginate @items
다른 분류에 대한 링크는 아직 설정되지 않았지만
그거는 또 쓰도록 하겠습니다.

좋은 웹페이지 즐겨찾기