2017-12-19 3 views
0

Ich bin ein Newb zu Ruby on Rails und ich habe ein Problem beim Anzeigen der Indexnummer eines Datensatzes. Ich hatte eine gute Suche, kann aber die spezifische Antwort nicht finden.Active Records - Listet die Indexnummer des Artikels auf (die tatsächliche Bestellnummer, in der der Artikel angezeigt wird)

Das Problem, das ich habe, ist, dass ich keinen Weg finde, die Indexnummer aus einem Recordset auszugeben, das ich zeige.

  1. [Titel], [Beschreibung]
  2. [Titel], [Beschreibung]
  3. [Titel], [Beschreibung]
    usw.

So zu klären , Ich bin auf der Suche nach der Reihenfolge (Index) Nummer (1, 2, 3) in einer Liste, wo ich in der Lage bin, den Titel & Beschreibung auszugeben, auch ich werde das Offensichtliche darauf hinweisen - das ist anders th Die eindeutige ID, die in der Datenbank gespeichert werden kann. Wenn ich also die Ergebnisse filtern oder sortieren würde, würde ich immer noch die Ordnungsnummer (1, 2, 3 usw.) anzeigen wollen.

Ich habe Beispiel dafür gefunden, wo sie die Ergebnisse durchlaufen und inkrementell zu einem vordefinierten Indexwert hinzufügen. Das Problem ist, dass meine App keine loop-Anweisung verwendet, um die Datensätze auszugeben, sondern einen aktiven Datensatz verwendet, um die Ergebnisse anzuzeigen (und im Wesentlichen durchzulaufen). Soweit ich weiß, wird Active Records die Datensätze automatisch durchlaufen und ausgeben, indem das Code-Snippet gerendert wird.

<%= render @links %>
Dies funktioniert gut für mein Beispiel - Für den ganzen Code für die App finden Sie in dem Tutorial ich die App aus bedürftigen:

https://www.codementor.io/danielchinedu/building-a-basic-hacker-news-clone-with-rails-5-4gr4hrbis

So im Nachhinein, ich suche die App in der klonen Tutorial, aber fügen Sie eine Bestellnummer zu den Linklisten hinzu.

+0

Um zu verdeutlichen, ist die Indexnummer für Sie die nummerierte Reihenfolge, wie es in einer ActiveRecord Abfrage oder eine völlig separate Eigenschaft jedes Link-Objekts präsentiert wird? – jon1467

Antwort

1

Aus der Dokumentation:

Rails auch eine Zählvariable durch die Sammlung nach dem Mitglied der Sammlung gefolgt von _counter.if Sie Rendering @products, mit dem Namen innerhalb eines Teil genannt macht Innerhalb des Partiellen können Sie verweisen auf product_counter, um Ihnen zu sagen, wie oft das Teil gerendert worden ist. guides.rubyonrails.org


So kann man teilweise so etwas wie <%= link_counter %> in Ihrem _link.html.erb verwenden. Hoffe, das wird helfen.

+0

Eine gute Erklärung: https://coderwall.com/p/t0no0g/render-partial-with-collection-has-hidden-index –

+0

So einfach! Danke Anees und Peter. –

0

Das Tutorial erklärt es wirklich ruhig, denke ich.

Unter dem <%= render @links %>:


Wir Rails verwenden hier verfügen, wenn Sie auf eine Instanzvariable machen rufen einen aktiven Datensatz Beziehung Objekt hält, wird es iterativ Schleife durch das Objekt und dann das Rendern angemessen teilweise.


So! Es ist eine Rails-Funktion, die es einfacher macht, Partialloops zu schreiben!

<%= render @links %> ist die gleiche wie: <%= render partial: 'link', collection: @links %>

Wenn Sie einen Index in Ihrem Teil möchten, können Sie nur eine lokale Variable anhängen. Zum Beispiel:

Und dann in Ihrer Ansicht, nachdem Sie die Variable geschrieben haben, denken Sie daran, 1 hinzuzufügen, so dass es aufsteigend ist.

<div class="link"> 
    <div class="title"> 
    <%= num %> 
    <%= link_to link.title, (link.url? ? link.url : link) %> 
... 
<% num += 1 %> 

Viel Glück!

Verwandte Themen