Tôi muốn hiển thị một loại cây được quản lý với tổ tiên đá quý.Tại sao phương thức đệ quy của tôi từ trình trợ giúp không trả về mọi giá trị?
Tôi muốn sử dụng trình trợ giúp sẽ đệ quy qua cây và trả về từng danh mục một, cho thời điểm không có thẻ html hoặc nội dung.
module CategoriesHelper
def display_tree(category)
if category.has_children?
category.children.each do |sub_category|
display_tree(sub_category)
puts(sub_category.name) # to check if it goes here
end
end
category.name
end
end
Đối số category
là một trong các danh mục gốc.
Điều gì sẽ trở lại?
- Trong trang web: Nó chỉ hiển thị các loại cấp cơ
Sport Beauty Automobile
- Trong giao diện điều khiển:
Men Indoor Women Children Water sport Garage
Nếu nhận được chúng, sau đó nó có nghĩa là các công trình đệ quy, nhưng nó không . Tại sao nó chỉ trả về lần lặp đầu tiên?
Ngoài ra tôi muốn có được chúng theo thứ tự sau đây:
root/child/child-of-child
nhưng nếu tôi muốn quay trở lại category.name
, nó phải là ở vị trí cuối cùng.
Bạn có thể vui lòng cho tôi nhận xét của bạn không?
PS: Tôi vừa phát hiện ra (trong thêm thẻ) mà tôi đã sử dụng từ "đệ quy" tất cả cùng tìm kiếm của tôi nhưng nó không tồn tại, ngay cả khi nhiều người đang sử dụng nó trên stackOveflow; o) - > "đệ quy", nhưng tôi vẫn đang mắc kẹt
** EDIT **
Bây giờ tôi sử dụng mã này:
module CategoriesHelper
def display_tree(category)
tree = "<div class =\"nested_category\">#{category.name}"
if category.has_children?
category.children.each do |sub_category|
tree += "#{display_tree(sub_category)}"
end
end
tree += "</div>"
end
end
mà mang lại cho tôi:
012. <div class ="nested_category">Sport
<div class ="nested_category">Men</div>
<div class ="nested_category">Women
<div class ="nested_category">Indoor</div>
</div>
<div class ="nested_category">Children</div>
<div class ="nested_category">Water sport</div>
</div>
<div class ="nested_category">Beauty</div>
<div class ="nested_category">Automobile
<div class ="nested_category">Garage</div>
</div>
Nhưng html đó không được hiểu và mã giống nhau được hiển thị trong trang web được hiển thị. Tôi có nghĩa là tôi thấy
tôi có lẽ bị mất cái gì ... có lẽ kiến thức oO
Thx
Vui lòng thêm mã xem bạn đang sử dụng để hiển thị mẫu này trên mẫu. Bạn có thể thiếu phương thức raw() kèm theo phương thức display_tree() để ngăn Rails> = 3 tự động định dạng html. – robertodecurnex