contador de colección en carriles parciales
-
13-09-2019 - |
Pregunta
Estoy haciendo un parcial en una colección como esta:
<%= render :partial => 'issues/issue', :collection => @issues %>
Dentro de la parcial, quiero rendir un elemento
a menos que sea el último de la colección. Podría, por supuesto, hacer que el parcial como esto
<%= render :partial => 'issues/issue', :collection => @issues, :locals => {:issue_count => @issues.length } %>
A continuación, poner esto en mi parcial
<% unless issue_counter + 1 == issue_count %>
<hr />
<% end %>
pero no quiero tener que establecer explícitamente la llamada local en el render, y que la colección no siempre va a ser llamado @issues, así que no puedo acaba de acceder al varibale ejemplo. ¿Hay alguna manera de acceder a la longitud de la colección de forma automática dentro de la parcial a decir donde en la colección el objeto cae? Si no hay ya, es posible añadir esto de una manera tal que voy a conseguir de forma automática el issue_count local? Cualquier ayuda en esto será muy apreciada.
Thx,
-C
Solución
Puede suministrar la opción :spacer_template
a su llamada render :partial => X, :collection => Y
. Vea la ActionController::Base
Documenation para su uso.
Probablemente se siente torpe para especificar un archivo parcial de la totalidad de un simple elemento de <hr />
, pero va esta ruta mantiene su intención clara y mantiene el elemento parcial libre del divisor de marcado no relacionado.
Otros consejos
Creo que se puede hacer que esto suceda si se modifica el método render_partial_collection.
Como nota al margen: Me parece que en su lugar debe usar CSS en una lista desordenada: Tengo la sensación de que va a insertar CR marcado el estilo en lugar de usarlo a objetos semánticamente separados en la colección (en la semántica de marcado ).