2013-12-11 41 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]的操作。希望這個解決方案會很簡單。

相關問題