Rails:Merit Gem徽章未注册或显示

时间:2013-12-11 06:05:10

标签: ruby-on-rails ruby 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中的任何内容,我认为它是在颁发徽章时显示的位置 - 即使我已经超过了阈值 -

此外,我不确定如何显示徽章 - 我正在使用:

<%= current_user.badges %>

现在,我得到的是括号 - 我想要它返回的是徽章的图像---

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您是否将徽章的custom_fields作为哈希访问?您添加到custom_fields中的那些自定义属性(如img_url,难度,颜色等)将无法通过简单的点符号进行访问,即。 badge.img_url无法工作。相反,您需要执行badge.custom_fields[:img_url]badge.custom_fields[:whatever_custom_attribute]之类的操作。希望修复就这么简单。

答案 1 :(得分:0)

对于有类似问题的其他人:我终于能够使用以下内容显示徽章:

<% current_user.badges.each do |badge| %>
<%= image_tag (badge.image) %>
<% end %>

答案 2 :(得分:0)

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