铁轨徽章 /成就系统动态主列表
-
10-10-2019 - |
题
因此,我正在使用以下方法: 如何在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
不隶属于 StackOverflow