Screencast: Undo mit Paper Trail

„Undo“ und „Redo“ Funktionen lassen sich sehr einfach mit gems wie zum Beispiel Paper Trails implementieren. In dieser Woche zeigt Ryan wie es eingesetzt werden kann.

div> 

Download:

Download(20.5 MB, 13:22)
Alternativer Download für iPod & Apple TV(19.7 MB, 13:22)

 

Resourcen:

 

Quellcode:

[bash]
bundle
rails g paper_trail:install
rake db:migrate
rails g controller versions
[/bash]

[ruby]
# Gemfile
gem ‚paper_trail‘

# products_controller
def undo_link
view_context.link_to("undo", revert_version_path(@product.versions.scoped.last), :method => :post)
end

# routes.rb
post "versions/:id/revert" => "versions#revert", :as => "revert_version"

# versions_controller
def revert
@version = Version.find(params[:id])
if @version.reify
@version.reify.save!
else
@version.item.destroy
end
link_name = params[:redo] == "true" ? "undo" : "redo"
link = view_context.link_to(link_name, revert_version_path(@version.next, :redo => !params[:redo]), :method => :post)
redirect_to :back, :notice => "Undid #{@version.event}. #{link}"
end
[/ruby]