h1. Drag-Drop Sortable for ActiveScaffold Currently, this gem is compatible with rails 3.x and ActiveScaffold 3.3.x gems. h2. Overview This gem adds an action to clone records. By default will only set attributes and belongs_to associations. You must override initialize_dup in your model or define a method to clone the record and set in conf.duplicate.method. h2. Installation You'll need at least ActiveScaffold 3.3.x to use this, and rails 3.x
gem install active_scaffold_duplicateh2. Usage h4. Step 1 Override initialize_dup in the model to set some attributes or copy associations:
# app/models/bill.rb class Bill < ActiveRecord::Base belongs_to :customer has_many :items def initialize_dup(other) super self.items = other.items.map(&:dup) end endh4. Step 2 Add duplicate action.
class BillsController < ApplicationController active_scaffold do |conf| conf.actions << :duplicate end endh4. Step 3 Change method to :get in link if you want to display create form instead of cloning record. Set position to :replace or :after for inline display, or enable page rendering.
class BillsController < ApplicationController active_scaffold do |conf| conf.duplicate.link.method = :get conf.duplicate.link.position = :after #conf.duplicate.link.page = true # for new page rendering end endAlso you can change it globally.
class ApplicationController < ActionController::Base active_scaffold.set_defaults do |conf| conf.duplicate.link.method = :get conf.duplicate.link.position = :after #conf.duplicate.link.page = true # for new page rendering end endYou can access to record which is being duplicated in your form overrides with @old_record variable. If you use :post method, you can enable refresh_list to refresh the list instead of only adding new record at top, or set action_after_clone to open edit form for example:
conf.duplicate.refresh_list = true conf.duplicate.action_after_clone = :edith2. Before/after controller methods It's possible to define some methods to add some custom code which require access to session or request params: * For :post method, before_duplicate_save(record) and after_duplicate_save(record) can be defined, which will be called before and after saving the record respectively. * For :new method, before_duplicate_new(record) can be defined, which will be called before rendering. h2. Support If you have issues installing the gem, search / post to the "Active Scaffold":http://groups.google.com/group/activescaffold forum or "Create an issue":http://github.com/activescaffold/active_scaffold_clone/issues h2. Contributing Fork, hack, push, and request a pull: http://github.com/activescaffold/active_scaffold_duplicate/ h2. License Released under the MIT license (included). h2. Author Contact me:
Sergio Cambra - irb(main):001:0> ( 'sergioATprogramatica._see_s'.gsub('_see_', 'e').gsub('AT', '@') )