2013-12-11 39 views
0

我成立了其登记在DB以下徽章:的Rails:功勋宝石徽章不登记或显示

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条目中看到数据库中的条目 - 但我没有看到徽章中的任何内容,我假设它们会在徽章发布时显示 - 尽管我已经超过了阈值 - -

而且我不确定如何显示徽章---我使用:

<%= current_user.badges %> 

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

很大的帮助赞赏。

+0

作为临时徽章,只要用户创建第六个任务徽章,如果按等于(而不是大于或等于)计算,该徽​​章将会消失。无论如何,你的情况似乎没有计算你想要的,试试:'task.user.tasks.count> = 5'。 – TuteC

+0

工作。我将它改为:'grant_on'tasks#create',:badge =>'Five Tasks',:to =>:user do | task | task.user.tasks.count> = 5',它发布了徽章,但为了显示,我得到一个文本字符串:'[”/ images/placeholder.gif“}>]'当我试图让图片展示 - 我需要改变 - 看起来就像他们是一个已经用于图像的区域(我将它定制为一个自定义字段) - 最后如果我想重新开始 - 是否需要手动清除数据库条目 - 感谢帮助 – user1648020

+0

另外一个问题 - 在上述之后我尝试将规则更改为'grant_on'任务#create',:badge =>'Five Tasks',:temporary => true,:to =>:user do | task | task.user.tasks.count> = 5' - 重新启动服务器 - 使用新用户 - 按预期发布徽章 - 但是当我删除任务时显示从任务表中删除 - 但仍显示在优点行动和作为一个发行的徽章--- – user1648020

回答

0

为了其他人有类似的问题:我终于能使用显示徽章如下:

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

我试过这个......“徽章......做徽章|”最后创建了窗框......但是当我将代码放在上面时它仍然不显示图像。没有任何错误信息......实际上一无所有。我在用户配置文件下看到窗框下的窗框和徽章标识。 –

+0

用您使用的确切代码发布您自己的问题,我可以看看 - 不确定我是否能够协助,但会尝试 - 只是提供一个链接到后 - – user1648020

+0

已经做到了:)是真的感谢你,如果你能帮助。 HTTP://计算器。com/questions/21009038/rails-3-2-merit-gem-badge-not-working –

2

是不是访问到徽章的custom_fields作为哈希?那些添加到像img_url,难度,颜色等custom_fields中的自定义属性将不能通过简单的点符号即ie访问。 badge.img_url将不起作用。相反,您需要执行类似badge.custom_fields[:img_url]badge.custom_fields[:whatever_custom_attribute]的操作。希望这个解决方案会很简单。

相关问题