2009-12-05 90 views
0

在我的Rails應用程序中,我有一個遞歸調用的部分。動態創建輸出名稱標籤的最佳方式是?

在部分我想輸出一個<h1>,<h2>, <h3> ...取決於水平。 (第6級,當然)

事情是這樣的:

<h1> 
    <p><%= ... %></p> 
    <% books.each do |book| %> 
     ... 
    <% end %> 
</h1> 

-------> 
<% open_h(1) %> 
    <p><%= ... %></p> 
    <% books.each do |book| %> 
     ... 
    <% end %> 
<% close_h(1) %> 

現在我砍死在一起的兩個功能幫手,但真正最優雅的方式來做到這一點?

回答

4

你可以做這樣的事情

# _book.html.erb 

<% content_tag "h#{level}" do %> 
    <p><%= ... %></p> 
    <% if level < 6 %> 
    <%= render :collection => books, :locals => { :level => level + 1 } 
    <% end %> 
<% end %> 

# action.html.erb 

<%= render :partial => :book, :collection => @books, :locals => { :level => 0 } %> 
1

我不知道我得到了你想要的東西,但看看content_tagtag幫手,並分享一些最終代碼,以便我們可以提供更多幫助。

+0

我想'tag'是最接近的功能我需要什麼。 'content_tag'不適用於我,因爲我想在封閉標籤(循環,調用partials)之間做一些更復雜的事情。對於content_tag,我必須首先將所有內容寫入字符串。 – 2009-12-05 16:46:25

+0

weppos在上面發佈的是專門用它來完成Ruby代碼的方式,而不是使用開放和關閉標籤 – khelll 2009-12-05 22:47:57

相關問題