複数のパーシャルを持つソリューションを探していますyields
。
実際の例では、次のビュー構造があります。
基本的な application.erb ( /views/layouts/application.erb ):
<!DOCTYPE html>
<head>
<title>Some title</title>
</head>
<body>
<div class="page">
<%= yield %>
</div>
</body>
</html>
私のコードを乾かす部分(/views/shared/content.erb):
<div class="content">
<div class="sidebar">
<%= yield :sidebar %>
</div>
<div class="main">
<%= yield %>
</div>
</div>
コントローラ ビュー ( /views/home/index.erb ):
<%= render :partial => 'layouts/header' %>
<%= render :partial => 'shared/navigation' %>
<% # It is close to what I want to do %>
<%= render :layout => 'shared/content' do %>
<% content_for :sidebar do %>
<%# This is will go to application.erb, not in content.erb %>
<%= render :partial => 'shared/menu' %>
<% end %>
<%= yield %>
<% end %>
<%= render :partial => 'layouts/footer' %>
したがって、ここでの主な問題は、複数の生成領域と、カスタム html を渡す機能または別のパーシャルをレンダリングする機能を備えたテンプレート ブロックを用意することです。