Rails: значок Merit Gem не регистрируется или не отображается
Я установил следующий значок, который зарегистрирован в БД:
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 ответа
Вы обращаетесь к значку 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 %>