2017-04-10 3 views
0

Ich habe ein Menü in meiner Kopfzeile, das einen Warenkorb und eine Login-Schaltfläche hat, die jeweils funktionieren, wenn der Code separat eingefügt wird, aber nicht, wenn beide Zeilen in der Datei sind. Ich benutze Devise für die Benutzer. Gibt es eine bessere Möglichkeit, den aktuellen Warenkorb zu verknüpfen?Verknüpfen mit dem Warenkorb in Ruby on Rails

<li><%= link_to basket_path(@basket.id) do %> 
    <%= image_tag "/assets/viewBasket.png" %> 
</li> 
<% end %> 
<% if signed_in? %> 
    <li><%= link_to edit_user_registration_path do%> 
    <%= image_tag"/assets/my_account.png" %></a></li> 
    <% end %> 
    <li><%= link_to destroy_user_session_path do%> 
    <%= image_tag"/assets/logout.png" %></li> 
    <%end%> 
<% else %> 
    <li><%= link_to new_user_session_path do%> 
    <%= image_tag"/assets/loginRegisterBtn.png" %></li> 
    <% end%> 
<% end %> 

Wenn ich alleine laufe funktioniert das aber nicht mit dem Code danach.

<li><%= link_to basket_path(@basket.id) do %> 
    <%= image_tag "/assets/viewBasket.png" %></li> 
<% end %> 

Ich denke, es ist mit der Art, wie der aktuelle Korb mit der Sitzungs-ID im current_basket-Modell festgelegt ist.

module CurrentBasket 
private 
    def set_basket 
    @basket = Basket.find(session[:basket_id]) 
    rescue ActiveRecord::RecordNotFound 
    @basket = Basket.create 
    session[:basket_id] = @basket.id 
    end 
end 

Antwort

0

habe ich die Antwort oben, die mit einem Problem geholfen, aber ich fand, dass ich nur definiert hatte die Shop- und Indexseite. Entfernen Sie das und es funktioniert jetzt.

include CurrentBasket 
before_action :set_basket, only: [:index, :shop] 
0

Das Schließen des <li> nach dem Ende des link sein muss, wie folgt aus:

<li> 
    <%= link_to basket_path(@basket.id) do %> 
    <%= image_tag "/assets/viewBasket.png" %> 
    <% end %> 
</li>