Вопрос

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

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

Это звучит довольно легко, но из -за того, как работает система достижений (различные типы значков - все подклассы модели достижения. иметь возможность определить все подклассы модели достижений.

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

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

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

Однако, опять же, я понятия не имею, как итерация через все подклассы модели достижений.

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

Спасибо,

Это было полезно?

Решение

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

#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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top