因此,我正在使用以下方法: 如何在ROR中实施成就系统 在我的应用程序上实现徽章/成就系统。

到目前为止,这效果很好,但是我希望拥有目前存在的所有徽章的“主列表”。随着这不断增加,如果此列表可以动态填充自身,而不是我必须手动更新它,我希望它能。

这听起来很容易,但是由于成就系统的工作原理(各种类型的徽章都是成就的子类。RB模型... DB中有许多相同徽章的实例)我不确定如何如何处理能够确定成就模型的所有子类。

此外,我希望每个徽章都有自己的显示页面(示例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