Рендеринг дерева с использованием коллекции рендеров - PullRequest
2 голосов
/ 14 июня 2011

У меня есть сайт с отзывами.При их отображении первый отзыв для элемента не должен иметь отступ, но последующие должны быть.

Вывод 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>
</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 } %>

_review_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 %>

1 Ответ

0 голосов
/ 14 июня 2011

Предлагаю вам посмотреть этот скринкаст от Райана Бейтса.Это касается именно темы.

...