LoginSignup
0
0

More than 3 years have passed since last update.

ActiveAdminのactionsボタンのitemについて

Posted at

はじめに

ActiveAdminは管理画面のCRUDを簡単に実装できるGemです。
ActiveAdminは便利なのですが、細かいところをイジろうとした際にどのように実装すれば良いのか詰まることが頻繁にあります。
今回は、条件によって表示するactionsを分けたいと思いこちらの記事を参考にさせていただいて実装をしました。
実装の中で以下のitemという記述が何をしているのかよくわからなかったため調べました。

app/admin/users.rb
actions defaults: false do |user|
      item I18n.t('active_admin.view'), admin_user_path(user), class: 'view_link member_link'
      item I18n.t('active_admin.edit'), edit_admin_user_path(user), class: 'edit_link member_link'
      item I18n.t('active_admin.delete'), admin_user_path(user), class: 'delete_link member_link', method: :delete, data: { confirm: I18n.t('active_admin.delete_confirmation') } unless user.admin?
    end

何をしているのか?

itemを消してみるとSyntaxErrorになります。

app/admin/users.rb
actions defaults: false do |user|
      I18n.t('active_admin.view'), admin_user_path(user), class: 'view_link member_link'
      item I18n.t('active_admin.edit'), edit_admin_user_path(user), class: 'edit_link member_link'
      item I18n.t('active_admin.delete'), admin_user_path(user), class: 'delete_link member_link', method: :delete, data: { confirm: I18n.t('active_admin.delete_confirmation') } unless user.admin?
    end

スクリーンショット 2020-07-12 22.58.22.png

itemが必要なのはわかりましたが、itemの中身はどのようになっているのかpryで見てみます。

app/admin/users.rb
actions defaults: false do |user|
      binding.pry
      item I18n.t('active_admin.view'), admin_user_path(user), class: 'view_link member_link'
      item I18n.t('active_admin.edit'), edit_admin_user_path(user), class: 'edit_link member_link'
      item I18n.t('active_admin.delete'), admin_user_path(user), class: 'delete_link member_link', method: :delete if user.id == 1
    end

スクリーンショット_2020-07-12_23_02_53.png

なるほどitemはaタグを生成してくれていることがわかりました。

itemを使ってみる

itemには引数を渡すことができます。

app/admin/users.rb
 actions defaults: false do |user|
   item('hoge')
 end

上記は次のアクションを生成します。
スクリーンショット_2020-07-12_23_18_34.png
スクリーンショット_2020-07-12_23_19_53.png

hogeという名前で/admin/usersへのリンクが生成されました。
また、itemに第2引数を渡すこともできます。

app/admin/users.rb
actions defaults: false do |user|
  item('hoge', '/admin/hoge')
end

こちらはhogeという名前で/admin/hogeへのリンクを生成します。
スクリーンショット_2020-07-12_23_25_58.png

最後に

actionsをカスタマイズする際にitemに引数を渡すと、様々なリンクを生成できることがわかりました。
actionsについて書かれているソースコードの箇所はこちらになりますので、気になられた方は参照ください。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0