所以我有一个非常有效的批量操作。但是现在我想通过单击右侧的按钮(如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
答案 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