Ruby on rails 使用渲染集合渲染树
我有一个评论网站。显示它们时,项目的第一次审阅不应缩进,但后续审阅应缩进 HTML输出应类似于:Ruby on rails 使用渲染集合渲染树,ruby-on-rails,collections,recursion,partial,Ruby On Rails,Collections,Recursion,Partial,我有一个评论网站。显示它们时,项目的第一次审阅不应缩进,但后续审阅应缩进 HTML输出应类似于: <ul> <li>review for item 1</li> <li> review for item 2 <ul> <li>2nd review for item 2</li> <li>3rd review for item 2</li>
<ul>
<li>review for item 1</li>
<li>
review for item 2
<ul>
<li>2nd review for item 2</li>
<li>3rd review for item 2</li>
</ul>
</li>
</ul>
我得到的输出如下所示:
<ul>
<li>review for item 1</li>
<li>
review for item 2
</li> <!-- wrong -->
<li> <!-- wrong -->
<ul>
<li>2nd review for item 2</li>
<li>3rd review for item 2</li>
</ul>
</li>
</ul>
_reviews.html.erb
<%= render :partial => "review_item", :collection => @reviews, :locals => { :reviews_local => @reviews } %>
_查看_item.html.erb
<% if review_item_counter == 0 %>
<ul>
<% end %>
<li>
<% if @current_reviewable != review_item.id %>
<% @current_reviewable = review_item.id %>
<%= review_item.body %>
<% else %>
<% reviews_local.slice!(review_item_counter, reviews_local.size) %>
<%= render :partial => "review_item", :collection => reviews_local, :locals => { :reviews_local => reviews_local } %>
<% end %>
</li>
<% if review_item_counter == reviews_local.size - 1 %>
</ul>
<% end %>
我建议你看看Ryan Bates写的。它完全涵盖了这个主题。我建议您看看Ryan Bates的文章。它完全涵盖了主题。但是它没有使用无序列表,这使得问题更加困难。但是它没有使用无序列表,这使得问题更加困难。我可以更轻松地使用迭代和div来完成这项工作。递归确实让人头疼。我可以更轻松地使用迭代和div来实现这一点。这种递归确实令人头痛。