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 %>