2009-07-14 10 views
4

Ich bin eine teilweise in einer Sammlung wie diese machen:Sammlung Zähler in Schienen partials

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

Innerhalb des Teil, ich möchte ein


Element zu machen, es sei denn, es ist das letzte in der Sammlung ist. Ich könnte natürlich, machen die teilweise wie diese

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

diese dann

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

in meinem Teil setzen, aber ich will nicht die lokal in dem Render Aufruf explizit festgelegt haben, und ich Die Sammlung wird nicht immer @issues heißen, daher kann ich nicht einfach auf die Instanz varibale zugreifen. Gibt es einen Weg, um automatisch auf die Länge der Sammlung zuzugreifen, um zu bestimmen, wo in der Sammlung das Objekt fällt? Wenn das nicht bereits der Fall ist, ist es möglich, das so hinzuzufügen, dass ich automatisch den "issue_count" lokal bekomme? Jede Hilfe wird sehr geschätzt.

Thx,

-C

Antwort

4

Sie können die :spacer_template Option zu Ihrem render :partial => X, :collection => Y Anruf liefern. Siehe ActionController::Base documenation für die Verwendung.

Es fühlt sich wahrscheinlich schwer an, eine ganze Teildatei für ein einfaches Element zu spezifizieren, aber diese Route hält Ihre Absicht klar und hält das Element teilweise frei von nicht verwandtem Teiler-Markup.

+0

während dies nicht wirklich die Zählung in der partiellen erhalten, scheint es die Notwendigkeit dafür zu beseitigen :) thx -C –

0

Ich denke, man kann das passieren, wenn Sie die render_partial_collection Methode ändern. Als Randnotiz: Scheint mir, als ob Sie stattdessen CSS auf einer ungeordneten Liste verwenden sollten: Ich habe das Gefühl, dass Sie Markup-HRs in Stile einfügen, anstatt sie semantisch in der Sammlung zu trennen (im Mark-up) Semantik).

+0

ja, vielleicht so, aber es ist schnell. auch, es ist eine gute Sache zu wissen, wie man macht :) –

+0

Es ist nicht schneller als nur den Inhalt Ihrer partiellen in einem

  • Tag-Set statt. –