Rails Badge / Достижения Системный Динамический Основной Список - PullRequest
1 голос
/ 11 января 2011

Поэтому я использую метод в: Как внедрить систему достижений в RoR для реализации системы значков / достижений в моем приложении.

До сих пор это прекрасно работало, ноЯ хочу иметь «главный список» всех значков, которые в настоящее время существуют на сайте.Поскольку этот показатель постоянно увеличивается, я хотел бы, чтобы этот список мог динамически заполняться сам, а не обновлять его вручную.

Это звучит довольно просто, но из-за того, как работает система достижений (различные типы значков являются подклассами модели Achievement.rb ... в БД есть много экземпляров одних и тех же значков) Я не уверен, как определить все подклассы модели достижений.

Кроме того, я бы хотел, чтобы каждый значок имел свою собственную страницу показа (пример URL: http://www.mysite.com/achievements/badge1)

Так что в этом основном списке изображения значков будут выглядеть примерно так:

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

Однако, опять же, я понятия не имею, как перебрать все подклассы модели Достижения.

Имеет ли это смысл? Как мне это сделать?

Спасибо

1 Ответ

2 голосов
/ 02 февраля 2011

Чтобы перебрать подклассы, вы должны иметь возможность сделать что-то вроде этого:

#Get the subclasses as class objects
Achievement.subclasses

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

А затем для URL-адресов показа, вероятно, создайте маршрут, например, "достижений /: значок", и в вашем контроллере выполните

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

#or, depending on how you've named everything
@badge = params[:badge].camelize.constantize.all
...