2009-12-05 37 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

相关问题