アプリケーションショッピングカートの部分(views / cart / _cart.html.erb )を作成しました。私はviews/layouts/application.html.erbファイルでのみレンダリングしています。しかし、実行すると、 views / cart / _cart.index.erb以外のすべてのページでNoMethodErrorが発生します。これは、レンダリングされているパーシャルと同じコントローラーを共有しているためと思われます。
私はどこでも答えを探していましたが、パーシャルをレンダリングするときに変数を渡す方法と関係があると信じています。誰かが見てくれたら本当にありがたいですか?
すべてのコードはここにあります:https ://github.com/rossmc/topsnowboards
パーシャル(views / cart / _cart.html.erb)のコードが始まります:
<% @cart = cart%>
<h1>Your Cart</h1>
<% if @cart.empty? %>
<p>There is nothing in your shopping Cart</p>
<% end %>
<% total = 0 %>
<!-- More code displaying the rest of the cart omitted for brevity
パーシャルは、views / layouts/application.html.erbに次のようにレンダリングされます。
<%= render :partial => "/cart/cart", :locals => { :cart => @cart }
実行すると、Railsが私に返すエラーメッセージは次のとおりです。
NoMethodError in Site#home
Showing Server Side/PROJ-Server Side/app/views/cart/_cart.html.erb where line #5 raised:
undefined method `empty?' for nil:NilClass
Extracted source (around line #5):
2:
3: <h1>Your Cart</h1>
4:
5: <% if @cart.empty? %>
6: <p>There is nothing in your shopping Cart</p>
7: <% end %>
8: