class VersionsController < ApplicationController cache_sweeper :page_sweeper, :only => [ :create ] before_filter :find_book def show @page = @book.pages.find_by_title(params[:page_title]) @version = @page.entry_versions[params[:version_number].to_i - 1] end def new Book.transaction do @page = @book.find_or_build_page(params[:page_title]) @version = @page.find_or_build_version(params[:version_number]) end @author_name = cookies[:author_name] || "Anonymous Coward" end def create begin Book.transaction do @page = @book.find_or_create_page(params[:page]) author = @book.find_or_create_author(params[:author_name], request.remote_ip) base_revision_number = params[:page][:revision_number].to_i @page.create_version(author, base_revision_number, params[:version]) end cookies[:author_name] = { :value => params[:author_name], :expires => 20.years.from_now } redirect_to page_url(:page_title => @page) rescue => e flash[:error] = e.message redirect_to new_url(:book_url_name => @book, :page_title => @page) end end end