счетчик сбора в рельсах частичный

Я визуализирую частичное в коллекции следующим образом:

<%= 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? Любая помощь в этом будет высоко оценена.

Спасибо,

-C


person Chris Drappier    schedule 14.07.2009    source источник


Ответы (2)


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

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

person Duncan Beevers    schedule 24.07.2009
comment
хотя это на самом деле не дает мне подсчета внутри частичного, похоже, это устраняет необходимость в нем :) thx -C - person Chris Drappier; 25.07.2009

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

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

person Felix Ogg    schedule 14.07.2009
comment
да, может быть, но это быстро. а еще полезно уметь делать :) - person Chris Drappier; 15.07.2009
comment
Это не быстрее, чем просто обернуть содержимое партиала в набор тегов ‹li›‹/li›. - person Brendon Muir; 10.03.2010