(私はerbを使用しています。hamlはわかりませんが、アイデアは簡単に転送できるはずです)
content_forを使用して問題を解決できます。
カートを表示するビュー ファイルにこのコードを追加します。
Products/show.html.erb Products/index.html.erb Categories/show.html.erb,Categories/index.html.erb (質問のように)。
<% content_for :cart, render('layouts/cart') %>
今すぐ呼び出します:
<%= yield :cart %>
application.html.erb (またはカートを表示したい場所) で。
例:
レイアウト/アプリケーション:
<!DOCTYPE html>
<html>
<head>
<title>Testapp</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield :cart%>
<%= yield %>
</body>
</html>
製品/ショー:
<% content_for :cart, render('layouts/cart') %>
<p>I have content_for call so my appilication.html will dispaly cart partial</p>
製品/インデックス:
<p>I don't have content_for call so my appilication.html will not dispaly cart partial</p>
レイアウト/カート:
<h1>Here I am!</h1>
Products インデックス パスにアクセスすると、次のものが生成されます。
I don't have content_for call so my appilication.html will not dispaly cart partial
Products show パスにアクセスすると、次のものが生成されます。
Here I am!
I have content_for call so my appilication.html will dispaly cart partial