Cells & Ancestry

Mam problem,

kombinuje i kombinuje i nic nie mogę wykombinować…

Staram się zrobić menu boczne z kategoriami produktów z wykorzystaniem Cells i Ancestry i się chyba trochę pogubiłem.

Jak wyświetlić pełną listę kategorii (tree) statycznie ? (menu z kategoriami zawsze widoczne, a reszta strony zmienna)

Proszę was o jakieś wskazówki jak to zrobić bo już się z tym bawię 3 dzień i nic mi nie wychodzi :confused:

Edit:

Przeczytałem jeszcze raz te moje poranne wypociny i sam z nich malo rozumiem.

Wytłumaczę raz jeszcze.

Zrobiłem menu ancestry na podstawie railscast i wszystko fajnie działa z wyjątkiem tego, że menu wyswietla się tylko wtedy jak ścieżka jest podana na kontroler Category. Staram się przez to użyć cells, aby załadować widok menu kategorii do layoutu.

Niestety nie moge sobie z tym poradzić, ponieważ menu dalej sie pokazuje tylko url do kontrolera kategorii( + id) a kiedy chce wyswietlic index Category niestety model jest pusty.

Prosze was o pomoc bo już powoli trace nadzieje, że rozwiąże ten mój pewnie dla was błachy problem :confused:

Pokaż kod, nikt nie będzie przecież wróżył. :slight_smile:

category/show.html.erb

<%= render ‘submenu_categories’, categories: @category.root.descendants.arrange %>

<%= notice %>

Name: <%= @category.name %>

Ancestry: <%= @category.ancestry %>

<%= link_to ‘Edit’, edit_category_path(@category) %> |
<%= link_to ‘Back’, categories_path %>

category/_submenu_categories.html.erb

    <% categories.each do |category, children| %>
  • <%= link_to_unless_current category.name, category %> <%= render 'categories/submenu_categories', categories: children if children.present? %>
  • <% end %>

problem już tutaj jest taki, że muszę wejść w konkretna kategorie żeby się w ogóle jakieś menu pokazało, a z pokazaniem tego przez cell już zupełnie nie mogę sobie poradzić …

Aktualizacja:

categories_controller.erb

def index
@categories = Category.all
@categoriesroot = @categories.roots
render erb: cell(CategoryCell , @categoriesroot).(:index)
end

categories/index.html.erb

<%= render ‘submenu_categories’ , categories: @categoriesroot %>

_submenu_categories.html.erb

    <% categories.each do |category| %>
  • <%= link_to_unless_current category.name, category %> <%= render 'categories/submenu_categories', categories: category.children if category.children.present? %>
  • <% end %>

Cell - category/index.erb

INDEX

<% if model.nil? %> nil <% else %> <% model.each do |category| %> <%= category.name %> <% end %> <% end %>

Cell - category_cell.erb

class CategoryCell < Cell::ViewModel
include ::Cell::Erb

property :name

def index
render
end

end

Jest teraz już prawie działające, tylko teraz jak mogę partial podpiąć pod cell ? i czy w ogóle poprawnie to robię ?

I udało mi się w jakiś sposób rozwiązać mój problem :slight_smile: Dzięki za pomoc :joy:

Rozwiązanie:

categories_controller.erb

def index `` @categories = Category.all `` @categoriesroot = @categories.roots `` render erb: cell(CategoryCell , @categoriesroot).(:index) end

application.html.erb

<%= cell(:category, Category.all.roots).(:index) %>

cells/index.erb

<p> Kategorie </p>
<ul>
  <% if model.nil? %>
  nil
  <% else %>
    <% model.each do |category| %>
    <li>
      <%= category.name %>
       </li>
       <%  category.children.each do |children|  %>
       <ul>
         <li>
           <%= link_to_unless_current children.name, children %>
         </li>
       </ul>
       <% end  %>
    <% end  %>
  <% end %>
</ul>