活动管理员操作项/成员操作

时间:2013-09-16 20:28:14

标签: ruby-on-rails-3 activeadmin

所以我有一个非常有效的批量操作。但是现在我想通过单击右侧的按钮(如view / edit / destroy)来使用相同的动作。但我似乎无法做对。

# app/admin/subscriptions.rb
ActiveAdmin.register Subscription do
...
  batch_action :approve_selected do |subscriptions|
    subscriptions.each do |subscription|
      Subscription.find(subscription).approve
    end
    redirect_to :back
  end

  member_action :approve do
    Subscription.find(params[:id]).approve
    redirect_to :back
  end

  action_item :only => :show do
    link_to('Approve', approve_admin_subscription_path(subscription))
  end
...
end

使用此代码在“查看”,“编辑”或“删除”旁边显示“无”按钮。我认为这是因为我正在使用:only => show因此我将其取消或使用only :index但两者都给出了以下错误(我无法找到很多相关内容):

undefined local variable or method `subscription' for #<ActiveAdmin::Views::ActionItems:0x007fb3a95b25c0>

如果我将操作项目行更改为action_item :only => index do |subscription|,那么会出现以下错误,而puts subscription只会提供一些HTML(不明白为什么):

undefined method `each_byte' for nil:NilClass

4 个答案:

答案 0 :(得分:36)

可以通过以下方式完成:

ActiveAdmin.register Post do
  index do
    column :name
    actions defaults: true do |post|
      link_to 'Archive', archive_admin_post_path(post)
    end
  end
end

请注意,使用defaults: true会将自定义操作附加到有效的管理默认操作。

答案 1 :(得分:4)

对于登陆页面的朋友,为了追加1个以上的链接

做点什么:

    actions default: true do |model|
        [
            link_to('Option 1', "#"),
            '  ',
            link_to('Option 2', "#")
        ].reduce(:+).html_safe
    end

答案 2 :(得分:3)

找到答案here。您可以使用以下代码和问题中的代码(删除操作项块)

来完成
index do
...
  actions do |subscription|
    link_to('Approve', approve_admin_subscription_path(subscription))
  end
...
end

但是我认为有一种方法可以通过在默认操作中附加操作来实现(所以如果你知道如何做到这一点,那么再添加一个答案!)

此外,要删除默认设置,您可以将其更改为here

actions :defaults => false do |subscription|

答案 3 :(得分:0)

position: fixed书写下

index do