счетчик сбора в Rails Partials
-
13-09-2019 - |
Вопрос
Я визуализирую частичный фрагмент в коллекции следующим образом:
<%= 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, поэтому я не могу просто получить доступ к переменной экземпляра.Есть ли способ автоматически получить доступ к длине коллекции внутри частичного, чтобы определить, в какое место в коллекции попадает объект?Если этого еще нет, можно ли добавить это таким образом, чтобы я автоматически получал локальный номер Issue_count?Любая помощь в этом вопросе будет высоко оценена.
Спасибо,
-С
Решение
Вы можете предоставить :spacer_template
вариант для вашего render :partial => X, :collection => Y
вызов.См. ActionController::Base
документация для использования.
Вероятно, кажется неудобным указывать весь частичный файл для простого <hr />
элемент, но если пойти по этому пути, ваше намерение будет ясным, а часть элемента будет очищена от несвязанной разметки-разделителя.
Другие советы
Я думаю, вы можете добиться этого, если измените метод render_partial_collection.
В качестве примечания:Мне кажется, вместо этого вам следует использовать CSS в неупорядоченном списке:У меня такое ощущение, что вы вставляете HR разметки в стиль вместо того, чтобы использовать его для семантического разделения элементов в коллекции (в семантике разметки).