Railsバッジ /達成システムの動的マスターリスト
-
10-10-2019 - |
質問
だから私は次の方法を使用しています: RORで達成システムを実装する方法 私のアプリにバッジ/功績システムを実装する。
これはこれまでのところうまくいきましたが、現在サイトに存在するすべてのバッジの「マスターリスト」を持ちたいと思っています。これが継続的に増加しているので、このリストが手作業でそれを更新しなければならないのではなく、このリストが動的に自分自身を埋めることができれば、私はそれを望んでいます。
これは非常に簡単に聞こえますが、成果システムの仕組みのために(さまざまなタイプのバッジがすべてAchievement.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