web-dev-qa-db-ja.com

activeAdminから削除オプションを削除する方法?

in Rails gem activeadminまだ編集と表示のアクションが必要なときに、デフォルトのアクションから削除オプションを削除したいのですが、それを行う方法はありますか?

43
Kareem Hashem

actionsへの呼び出しをすべてのアクティブな管理リソースに追加します。

ActiveAdmin.register Foobar do
  actions :all, :except => [:destroy]
end
99
Thomas Watson

ある時点でこの問題が発生しました。destroyメソッドが原因で、「削除」ボタンが消えませんでした

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
7
vladCovaliov

受け入れられた回答は「間違った数の引数」という例外をスローしたので、削除ボタン(:destroyアクション)を除外するためにこれを行いました

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
2
Means

ActiveAdminリソースのdefault_actionsからアクションを削除する別の方法は、次のようにconfig変数を使用することです。

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

1つの方法は、actionsメソッドを介して受け入れられた回答ですでに言及されています。

2
Manoj Sehrawat

削除ボタンを完全に削除する場合は、次のアクションを使用します。actions:all、ただし例外:[:destroy]

ただし、削除ボタンにリソースプロパティに基づく条件が必要な場合(たとえば、関連するデータまたはステータス)。

インデックスページ:index do ...... ......アクションのデフォルト:false do | row |もしできるなら? :read、row text_node link_to "View"、admin_resource_path(row)、class: "view_link" end if can if? :edit、row text_node link_to "Edit"、admin_resource_path(row)、class: "edit_link" end if can if? :destroy、row text_node link_to I18n.t( 'active_admin.delete')、admin_resource_path(row)、method::delete、data:{confirm:I18n.t( 'active_admin.delete_confirmation')}、class: "delete_link" if 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?

終わり

私のひどいフォーマットでごめんなさい。

0
cool_php