活动管理员:同一列中的多个操作类似于查看、编辑、删除

Active Admin: Multiple Actions in same column similar to View, Edit, Delete

我正在使用活动管理员 gem 为我在 rails 应用程序上的 ruby 创建一个管理控制台。我遇到了一个问题,我想对索引页面上的每个项目执行多个自定义操作,就像查看、编辑、删除一样。但是添加自定义操作时只显示最后一个而不是全部。

 index do

   column 'Instructor Name',:user
   column 'Email Address', :email
   column 'Phone Number', :phone
   column 'website', link_to 'google', 'www.google.com' 
   column :bio
   actions defaults: false do |application|
     if application.user.instructor == 2
       button_to  'Disapprove', instructor_deny_user_path(application.user.id), method: :put
     else
       button_to  'Approve', instructor_approve_user_path(application.user.id), method: :put
     end 
     link_to "resume",getresume_instructor_applications_path(id: application.id)
   end 
 end

只显示简历 link 而不是 Approve/Disprove 和简历

我做错了什么

试着把你的 approve/disapprove link 放在这样的列中,

column 'action' do |application|
  application.user.instructor == 2 ? button_to  'Disapprove', instructor_deny_user_path(application.user.id), method: :put :  button_to  'Approve', instructor_approve_user_path(application.user.id), method: :put
end 

和默认 link 的简历。

actions defaults: false do |application|
  link_to "resume",getresume_instructor_applications_path(id: application.id)
end 

如果您的 ActiveAdmin >= 1.0.0.preX,您可以这样做:

   actions defaults: false do |application|
     if application.user.instructor == 2
       action_item  'Disapprove', instructor_deny_user_path(application.user.id), method: :put
     else
       action_item  'Approve', instructor_approve_user_path(application.user.id), method: :put
     end 
     action_item "resume", getresume_instructor_applications_path(id: application.id)
   end 

如果您使用 0.6.x:

   actions defaults: false do |application|
     if application.user.instructor == 2
       text_node link_to  'Disapprove', instructor_deny_user_path(application.user.id), method: :put
     else
       text_node link_to  'Approve', instructor_approve_user_path(application.user.id), method: :put
     end 
     link_to "resume", getresume_instructor_applications_path(id: application.id)
   end 

v1.3 的解决方案

   actions defaults: false do |application|
     if application.user.instructor == 2
       item  'Disapprove', instructor_deny_user_path(application.user.id), method: :put
     else
       item  'Approve', instructor_approve_user_path(application.user.id), method: :put
     end 
     item "resume", getresume_instructor_applications_path(id: application.id)
   end 

对我有用 - 感谢@littleforest 的评论

您还可以为间距添加, class: "member_link"