Отключить кеширование на конкретной модели в активном админе - PullRequest
1 голос
/ 18 октября 2019

По сути, я хочу иметь возможность иметь значение счетчика на панели навигации активного администратора, которое обновляется в соответствии с запросом. Но кажется, что зарегистрированные модели кэшируются, и, следовательно, также указывается метка навигации, предоставляемая зарегистрированной моделью.

Можно ли изменить это поведение кэширования по умолчанию?

ActiveAdmin.register ChangeRequest do
  config.sort_order = "created_at_desc"

  actions :all, except: [:show]

  menu label: "Change Requests (#{ChangeRequest.pending.count})"

  ....
end

Если возможно, «метка меню:» должна обновляться при каждой перезагрузке ...

Ответы [ 2 ]

0 голосов
/ 15 ноября 2019

Может быть, здесь будет работать proc?

menu label: proc{"Change Requests (#{ChangeRequest.pending.count})"}
0 голосов
/ 18 октября 2019

Вы можете попробовать использовать ajax для этой цели.

Предполагается, что у вас есть название модели Change Request

Добавить действие сбора в admin/change_request controller

  collection_action :total_pending do
    render json: { total: ChangeRequest.pending.count }
  end

в вашем файле active_admin.js.coffee добавьте этот ajax-вызов

  $.ajax
    url: '/en/admin/change_requests/total_pending'
    success: (data) ->
      $('#change_requests a').text("Custom text #{data.total}")

ПРИМЕЧАНИЕ. Идентификатор и URL-адрес HTML-элемента могут отличаться в зависимости от названия вашей модели и контроллера

...