Frage

Also habe ich die Methode in bin mit: Wie eine Leistung implementieren System in RoR ein Abzeichen / Achievement-System auf meiner app zu implementieren.

Das hat große bisher gearbeitet, aber ich bin zu wollen, eine „Master-Liste“ haben alle die Abzeichen, die derzeit auf dem Gelände vorhanden. Da diese ständig steigt, würde ich es gerne, wenn diese Liste selbst dynamisch bevölkern könnte, statt ich von Hand aktualisieren zu müssen.

Das klingt ziemlich einfach, aber weil, wie die Leistungen System funktioniert (die verschiedenen Arten von Abzeichen sind alle Unterklassen des Achievement.rb Modells ... es gibt viele Instanzen der gleichen Abzeichen in der db) Ich bin nicht sicher wie in der Lage sein, alle die Unterklassen der Achievements Modell zu bestimmen.

Außerdem würde ich für jedes Abzeichen wie seine eigene Show-Seite (zB URL haben: http: / /www.mysite.com/achievements/badge1 )

So in diesem Master-Liste der Abzeichen Bilder etwas wie folgt aussehen:

<%= link_to "#{image_tag @achievement.photo}", achievement_path(@achievement) %>

Doch noch einmal, ich habe keine Ahnung, wie man durchläuft alle Unterklassen des Achievement-Modells.

Ist das sinnvoll? Wie soll ich tun, um dies zu tun?

Danke,

War es hilfreich?

Lösung

Um eine Iteration durch die Unterklassen, sollten Sie in der Lage sein, so etwas zu tun:

#Get the subclasses as class objects
Achievement.subclasses

#Get just the subclass names
Achievement.subclasses.map(&:name)

Und dann für die Show URLs, wahrscheinlich eine Route machen wie 'Leistungen /: badge' und, in Ihrem Controller, tut

@badges = Achievement.where(:type => params[:badge]).all

#or, depending on how you've named everything
@badge = params[:badge].camelize.constantize.all
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top