[英]Rails 4 - Multiple yield blocks on a partial
是否可以使用多個yield
塊進行部分處理? 我想用它在我的項目中實現引導模式框,有點像這樣:
<div class="modal fade" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<%= yield :header %>
</div>
<div class="modal-body">
<%= yield :body %>
</div>
<div class="modal-footer">
<%= yield :footer %>
</div>
</div>
</div>
</div>
這或多或少是我想使用它的方式
<%= render partial: "shared/modal" do %>
<% content_for :header do %>
...
<% end %> %>
<% content_for :body do %>
...
<% end %> %>
<% content_for :footer do %>
...
<% end %> %>
<% end %>
有沒有辦法做到這一點? 出於某種原因,這可能是一種不好的方法嗎?
通過多次反復試驗,我想我在 Rails 5 中解決了這個問題,但需要在我的部分中插入一個空白yield
才能讓它工作:
_partial.html.erb
<div class="partial">
<%= yield %> <!--Does not do anything-->
<div class="header">
<%= yield :header %>
</div>
<div class="text">
<%= yield :text %>
</div>
</div>
實現為:
full_layout.html.erb
<%= render "partial" do %>
<% content_for :header do %>
<h1>Header content</h1>
<% end %>
<% content_for :text do %>
<p>Text content</p>
<% end %>
<% end %>
我認為您的渲染部分有問題。 請注意,您在渲染部分塊中擁有所有 content_for 塊。
<%= content_for :thing do %>
Some content
<% end %>
<%= render partial: "blah" %>
在你的部分中使用多個 yield 塊沒有問題。 唯一要做的就是確保確實需要很多。 例如 content_for 部分基本上是內容的占位符,可以根據應用程序的邏輯而變化。 因此,在一頁中使用多個產量完全沒問題。
您也可以只在沒有輸出的情況下運行 put an yield
。 這樣您也可以使用默認塊。
<div>
<% yield %>
<div class="mt-3">
<div class="text-2xl tracking-wide font-bold text-gray-900">
heading
<%= yield :heading %>
</div>
</div>
<div class="relative bg-white rounded-xl shadow-xl mb-8 min-h-28">
<%= yield %>
</div>
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.