Spree i deface::override

Hej,

Mam taki widok:

[code]




    <%= render ‘shared/login_bar’ %>




    <%= render ‘shared/nav_bar’ %>

[/code] template nav_bar:

<li id="search-bar" data-hook> <%= render 'shared/search' %></li> <% if store_menu? %> <%= render 'shared/store_menu' %> <% end %>
template store_menu

[code]

  • <%= link_to t(:home), root_path %>
  • <%= link_to_cart %>
  • [/code] To co chce zrobić to wyrzucić li#link-to-cart i przenieś go do odrębnego diva wewnątrz div#menu.

    Mam 2 pliki *.rb

    Deface::Override.new(:virtual_path => 'layouts/spree_application', :name => 'add_link', :insert_after => '#nav-bar', :text => '<div id="link-to-cart" class="cart-indicator" data-hook ><%= link_to_cart %></div>')

    Deface::Override.new(:virtual_path => "shared/_store_menu", :name => "remove_link_to_cart", :remove => "li#link-to-cart")
    Można to zrobić w jednym pliku?

    Wygląda na to, że potrzebował byś akcji “move”, a tego Deface nie oferuje, więc zostaje Ci “remove”, a potem “insert_after”.

    Z tego co pamiętam to nie ma problemu, żebyś miał dwie akcje Deface w jednym pliku. Nazwij to sobie tylko w taki sposób, żebyś wiedział co gdzie masz :slight_smile:
    Ogólnie praca z customizacją spree jest bardzo fajna, niestety czasem dochodzi się do momentu w którym trzeba podmienić cały widok. Z pewnością nie jest to zalecana praktyka ale wydaje mi się, że czasem lepiej w pójść w tę stronę niż stracić 3 dni na przemieszczaniu elementów.

    Można.

    Oraz sprawdź metodę surround i surround_contents, być może jest dokładnie tym czego potrzebujesz.