Apr 10

ActiveScaffoldExt之二:多选列表和批量删除

Tag: activescaffold, enterprise, plugincaoweiyuan @ 12:21 pm

ActiveScaffoldExt之一我们介绍的是批量创建(batch_create)。那么当然也需要有一个批量删除。批量删除的首要条件是可以在列表里多选,这是在ActiveScaffold论坛中很多人希望有的功能。于是,我们的第二个扩展就来实现多选列表和批量删除。

简介

在列表中选中多个记录,批量执行一个动作(我们管它叫macro),这就是多选列表的功能。我们已经为批量删除定义好了一个macro,叫做“batch_destroy”,你可以直接用。如果你需要其他特殊功能,则需要在你的controller,或者ApplicationController里定义一个动作。

安装

请参考批量创建的安装。 

用法

controllers/sneakers_controller.rb

active_scaffold do |config|
  # 添加macro: 批量删除
  config.add_macro 'batch_destroy', :label => 'Delete', :method => :delete, :security_method => :delete_authorized?
end

config.add_macro的参数与config.action_links.add的参数(参考文档:api-action-link)类似,但是如果你设置了:type参数,则会被我们的缺省值:table覆盖,因为对于需要批量执行的macro命令,当然应该出现在列表的表头,而不是每个记录的右边。另外需要注意的是,批量删除的macro名称是batch_destroy,而不是batch_delete

Demo

这里是一个Demo,使用的是与批量创建相同的运动鞋的例子。如果你已经svn update了最新的l10n_scaffold插件,会发现这个新功能的汉化也在其中了。

Leave a Reply