2009-07-14 2 views
4

Я рендеринга частично в коллекции, как это:коллекция счетчик в рельсах Partials

<%= render :partial => 'issues/issue', :collection => @issues %> 

Внутри частичное, я хочу вынести


элемент, если это не последний в коллекции. Я мог бы, конечно, вынести частичное как этот

<%= render :partial => 'issues/issue', :collection => @issues, :locals => {:issue_count => @issues.length } %> 

затем поместить это в моей частичной

<% unless issue_counter + 1 == issue_count %> 
    <hr /> 
<% end %> 

, но я не хочу, чтобы явно установить локальный рендер вызов, и я коллекция не всегда будет называться @issues, поэтому я не могу просто получить доступ к экземпляру varibale. Есть ли способ получить доступ к длине коллекции автоматически внутри частичного, чтобы указать, где в коллекции падает объект? Если их еще нет, можно ли добавить это таким образом, чтобы я автоматически получил местонахождение issue_count? Любая помощь в этом будет высоко оценена.

Thx,

-C

ответ

4

Вы можете поставить опцию :spacer_template на ваш звонок render :partial => X, :collection => Y. См. ActionController::Base documenation для использования.

Возможно, с большим трудом нужно указать полный частичный файл для простого элемента <hr />, но по этому маршруту ваше намерение проясняется и сохраняет элемент без частичной разметки разделителя.

+0

, хотя на самом деле это не делает мне счет внутри частичного, он, похоже, устраняет необходимость в нем: thx -C –

0

Я думаю, что вы можете сделать это произойдет, если вы измените метод render_partial_collection.

В качестве побочного примечания: Мне кажется, что вы должны использовать CSS в неупорядоченном списке: у меня возникает ощущение, что вы вставляете разметку HR в стиль, а не используете его для семантически отдельных элементов в коллекции (в надбавке семантика).

+0

Да, может быть, так, но это быстро. Кроме того, хорошо знать, как это сделать :) –

+0

Это не быстрее, чем просто обертывание содержимого вашего частичного в теге

  • . –

    Смежные вопросы