Rails:Merit Gem徽章未注册或显示
我设置了以下在DB中注册的徽章:
merit.rb
Merit::Badge.create!({ id: 1, name: 'Five Tasks' custom_fields: { img_url: '/images/badge.gif' } })
我设置了以下规则:
badge_rules.rb
grant_on 'tasks#create', :badge => 'Five Tasks', :temporary => true, :model_name => 'Task' do |task| task.user_ids.count == 5 end
我想要发生的是当用户创建5个任务时,他们将获得徽章。
我在merit_actions和merit_activity_log条目中看到数据库中的条目 – 但我没有看到badges_sashes中的任何内容,我认为它是在颁发徽章时显示的位置 – 即使我已经超过了阈值 –
此外,我不确定如何显示徽章 – 我正在使用:
现在,我得到的是括号 – 我想要它返回的是徽章的图像—
非常感谢任何帮助。
您是否将徽章的custom_fields作为哈希访问? 您添加到custom_fields中的那些自定义属性(如img_url,难度,颜色等)将无法通过简单的点表示法访问,即。 badge.img_url
不起作用。 相反,你需要做一些像badge.custom_fields[:img_url]
或badge.custom_fields[:whatever_custom_attribute]
。 希望修复就这么简单。
对于有类似问题的其他人:我终于能够使用以下内容显示徽章:
<% current_user.badges.each do |badge| %> <%= image_tag (badge.image) %> <% end %>
更新Rails 5
您必须在视图中指定自定义字段参数:
/merit.rb
Merit::Badge.create!( id: 2, name: "FirstComment", description: "Premier commentaire !", custom_fields: { category: 'activity', image: 'ITM_02.svg' } )
/视图
<% @profil.badges.each do |badge| %> <%= image_tag (badge.custom_fields[:image]) %> <% end %>