我设置了以下在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 %>
现在,我得到的是括号 - 我想要它返回的是徽章的图像---
非常感谢任何帮助。
答案 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::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 %>