ancestry
보석과 함께 rails
과 함께 최근에 시작되었습니다. I는 다른 카테고리 객체 link_to
유선, 버튼을 표시하기 위해, ancestry
일품 통해 트리 구조로 저장되어 Category
오브젝트의 배열을 반복하려하고if else 문을 사용한 루비 반복 ... (가계 보석과 함께)
은 특정 범주에 관한 것이다.
데이터베이스의 처음 세 범주는 뿌리이므로 결국 모든 하위 항목에 대한 단추를 표시 할 수있는 충분한 공간이보기에 없습니다. 그래서 category.parent == 'nil'
이라면 주어진 카테고리의 아이들 만 표시하고 싶습니다.
그러나 다른 모든 범주 개체에 대해 주어진 범주의 모든 하위 항목을 표시하고 싶습니다.
<%= current_user.folders.each do |folder| %>
<% if folder.is_root? %>
<% folder.children.each do |child| %>
<%= link_to child, folder_path(child), class: 'btn' %>
<% end %>
<% else %>
<% folder.descendants.each do |desc| %>
<%= link_to desc, folder_path(desc), class: 'btn' %>
<% end %>
<% end %>
사람이 조언을 할 수 있을까를 통해 반복으로 나는,이 라인을 따라 뭔가를 생각하고 있었다?
트리 구조를 확립하기 위해 조상 보석을 사용하려고합니다 ... – jmcgillion
기본적으로 어떤 작업을했는지 ... 그러나 주어진 카테고리 개체의 ID를 기반으로 반복하는 방법을 알아 내려고 노력하고 있습니다 ... 귀하의 답변을 보내 주셔서 감사합니다. – jmcgillion
'ancestry' 보석은 위에서 설명한대로 작동합니다. "주어진 카테고리의 ID를 기반으로 iterate through"로 무엇을 의미하는지 확신 할 수 없습니다. 'id'를 사용하면'category = Category.find id' 카테고리를 발견 할 수 있습니다. 그러면 ancestry gem이'children' 메소드'category.children'을줍니다. 개체 트리 탐색을위한 방법이 많이 있습니다. https://github.com/stefankroes/ancestry#navigating-your-tree – DiegoSalazar