2017-04-10 10 views
0

私は見出しバスケットとログインボタンを備えたメニューを持っています。コードは別々に配置されていても両方の行がファイルにあるときは機能しません。 私はユーザーのためにdeviseを使用しています。 現在のバスケットにリンクするには、より良い方法がありますか?ルビーのレールでバスケット/カートにリンクする

<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 %> 

私自身で実行すると、このコードは動作しますが、コードでは動作しません。

現在のバスケットがcurrent_basketモデルのセッションIDで設定されている方法と関係していると思います。

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 

答えて

0

私は1つの問題を手伝ってくれました上で答えを使用し、しかし、私は私が唯一の定義されていたことがわかりましたショップとインデックスページ。これを削除すると、今すぐ動作します。

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

<li>の閉鎖は、このように、linkの終了後でなければなりません:

<li> 
    <%= link_to basket_path(@basket.id) do %> 
    <%= image_tag "/assets/viewBasket.png" %> 
    <% end %> 
</li> 
関連する問題