所以我有一个非常有效的批处理操作。但是现在我希望通过单击右侧的按钮(例如查看/编辑/销毁)来使用相同的操作。但我似乎无法正确处理。
# 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|
then ,则会出现以下错误并且puts subscription
只给出一些 html (不知道为什么):
undefined method `each_byte' for nil:NilClass