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 %>
Другие вопросы по тегам