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

Tom*_*ats 10 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
Run Code Online (Sandbox Code Playgroud)

使用此代码查看,编辑或删除旁边没有按钮.我认为这是因为我正在使用,:only => show所以我把它取下或使用,only :index但两者都给出了以下错误(我无法找到太多关于它):

undefined local variable or method `subscription' for #<ActiveAdmin::Views::ActionItems:0x007fb3a95b25c0>
Run Code Online (Sandbox Code Playgroud)

如果我将动作项目行更改为action_item :only => index do |subscription|然后给出以下错误并且puts subscription只给出一些html(不知道为什么):

undefined method `each_byte' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

Pie*_*ois 37

这可以通过以下方式完成:

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

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

  • 使用连接.所有你需要确保的是你返回安全的html:`(link_to ... + link_to ...).html_safe` (3认同)

ims*_*nu9 6

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

做类似的事情:

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