проблема повторного использования кода в активных админках - PullRequest
0 голосов
/ 18 февраля 2019

Как избежать общего кода, используемого в активном элементе действий администратора и действиях контроллера.Я видел людей, которые обычно писали один и тот же код в контроллере и активном элементе действий администратора.Есть ли способ избежать этого?

Например, я хочу отменить пользователя, и для этого требуется 3-4 шага.Так что я написал этот код в контроллере пользователей.

Теперь у меня есть пользователь ресурса в активном администраторе, и я хочу удалить пользователя из активного администратора.Я создал элемент действия и снова написал тот же код удаления пользователя в действии участника.

Есть ли способ избежать выше.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Предполагая, что это в регистре User (вероятно, в app/admin/users.rb), это может вам помочь.Действие action_item содержит только ссылку (фактически форму, которая публикует) на фактическую member_action.Это просто пример кода:

action_item :cancel_user, :only => :edit do
 link_to 'Cancel user',  do_cancel_user_admin_user_path(resource),   method => :post
end

member_action :do_cancel_user, :method => :post do
  flash.notice = "User will be canceled"
  resource.cancel # I guess this would the 4 lines of code that you are repeating
  redirect_to edit_admin_user_path(resource) and return
end

Дайте мне знать, если вас это не смутило.Удачи!

PS Несколько недель назад кто-то спросил что-то похожее, это также может помочь: Как сбросить пароль пользователя с помощью токена аутентификации Devise непосредственно со страницы редактирования в Active Admin?

0 голосов
/ 18 февраля 2019

Если вы хотите разделить код между различными контроллерами, вам следует обратить внимание на проблемы рельсов https://api.rubyonrails.org/v5.2.2/classes/ActiveSupport/Concern.html

...