Как удалить опцию удаления формы activeAdmin? - PullRequest
43 голосов
/ 12 октября 2011

в rails gem active admin Я хочу удалить опцию удаления из default_actions, пока мне все еще нужно действие edit и show, есть ли способ сделать это?

Ответы [ 5 ]

96 голосов
/ 12 октября 2011

Вы добавляете вызов к actions для каждого ресурса Active Admin:

ActiveAdmin.register Foobar do
  actions :all, :except => [:destroy]
end
7 голосов
/ 07 июля 2014

В какой-то момент у меня возникла эта проблема, из-за метода уничтожения кнопка «Удалить» не исчезла

actions :all, except: [:destroy]

controller do
  def destroy # => Because of this the 'Delete' button was still there
    @user = User.find_by_slug(params[:id])
    super
  end    
end
2 голосов
/ 29 апреля 2017

Принятый ответ вызвал исключение, «неправильное количество аргументов», поэтому я сделал это, чтобы исключить кнопку удаления (: уничтожить действие)

ActiveAdmin.register YourModel do
  actions :index, :show, :new, :create, :update, :edit

   index do

     selectable_column
     id_column
     column :title
     column :email
     column :name

    actions 
   end
1 голос
/ 12 марта 2019

Другой способ удалить действия из default_actions для ресурса ActiveAdmin - через переменную config, например:

    ActiveAdmin.register MyUser do
      config.remove_action_item(:destroy)
      ...
    end

Один способ уже упоминался в принятом ответе через actionsметод.

0 голосов
/ 09 октября 2017

Если вы хотите полностью удалить кнопку удаления, используйте: действия: все, кроме: [: destroy]

Но если для кнопки удаления требуется условие, основанное на свойствах ресурса (например, связанные данные или статус).

На странице указателя: индекс сделать ...... ...... действия по умолчанию: false do | row | если можешь? : читать, грести text_node link_to "View", admin_resource_path (row), класс: "view_link" конец если можешь? : редактировать, строка text_node link_to "Изменить", admin_resource_path (строка), класс: "edit_link" конец если можешь? : уничтожить, грести text_node link_to I18n.t ('active_admin.delete'), admin_resource_path (row), метод:: delete, data: {подтвердить: I18n.t ('active_admin.delete_confirmation')}, класс: "delete_link", если row.deletable? конец конец

конец

Теперь сложная часть, и мне пришлось несколько раз ударить головой, чтобы контролировать ее на странице шоу:

config.remove_action_item (: destroy) # удалит кнопку уничтожения

только action_item:: show do

link_to I18n.t('active_admin.delete'), admin_resource_path(resource), method: :delete, data: { confirm: I18n.t('active_admin.delete_confirmation') }, class: "delete_link" if resource.deletable?

конец

Извините за мое ужасное форматирование.

...