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会将自定义操作附加到活动的管理默认操作.
对于登陆页面的朋友,为了追加1个以上的链接
做类似的事情:
actions default: true do |model|
[
link_to('Option 1', "#"),
' ',
link_to('Option 2', "#")
].reduce(:+).html_safe
end
Run Code Online (Sandbox Code Playgroud)