Question

Je suis en utilisant la méthode: Comment mettre en œuvre une réalisation système RoR pour mettre en œuvre un badge / système de réalisation sur mon application.

Cela a beaucoup travaillé jusqu'ici, mais je suis désireux d'avoir une « liste maîtresse » de tous les badges qui existent actuellement sur le site. Comme cela augmente sans cesse, je voudrais si cette liste pourrait dynamiquement se remplir, au lieu de me faire mettre à jour manuellement.

Cela semble assez facile, mais à cause de la façon dont je ne suis pas sûr que le fonctionnement du système de réalisations (les différents types de badges sont toutes les sous-classes du modèle Achievement.rb ... il y a de nombreux cas, des mêmes badges dans la db) de la façon d'être en mesure de déterminer toutes les sous-classes du modèle Ambitions.

De plus, je voudrais pour chaque badge d'avoir sa propre page show (exemple url: http: / /www.mysite.com/achievements/badge1 )

au sein de cette liste maître les images de badge ressemblera à quelque chose comme ceci:

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

Cependant, encore une fois, je ne sais pas comment itérer à travers toutes les sous-classes du modèle de réalisation.

Est-ce que ce sens? Comment dois-je m'y prendre?

Merci,

Était-ce utile?

La solution

Pour itérer à travers les sous-classes, vous devriez être en mesure de faire quelque chose comme ceci:

#Get the subclasses as class objects
Achievement.subclasses

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

Et puis pour le spectacle URL, sans doute faire une route comme « réalisations /: badge » et, dans votre contrôleur, faites

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

#or, depending on how you've named everything
@badge = params[:badge].camelize.constantize.all
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top