Sha256: 006a6e3289172c63fcce4ca9c22938c247f2d65cc10209fc485ff103d3a53635
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
module Lev # A utility method for calling handlers from controllers. To use, # include this in your relevant controllers (or in your ApplicationController), # e.g.: # # class ApplicationController # include Lev::HandleWith # ... # end # # Then, call it from your various controller actions, e.g.: # # handle_with(MyFormHandler, # params: params, # success: lambda { redirect_to 'show', notice: 'Success!'}, # failure: lambda { render 'new', alert: 'Error' }) # # handle_with takes care of calling the handler and populates # @errors and @results objects with the return values from the handler # # # The 'success' and 'failure' lambdas are called if there aren't or are errors, # respectively. Alternatively, if you supply a 'complete' lambda, that lambda # will be called regardless of whether there are any errors. Inside these lambdas # (and inside the views they connect to), there will be @errors and @results # variables containing the errors and results from the handler. # # Specifying 'params' is optional. If you don't specify it, HandleWith will # use the entire params hash from the request. # module HandleWith def handle_with(handler, options) success_action = options.delete(:success) failure_action = options.delete(:failure) complete_action = options.delete(:complete) complete_action ||= lambda { render } if !(success_action || failure_action) options[:params] ||= params options[:request] ||= request options[:caller] ||= current_user @results, @errors = handler.handle(options) if complete_action.nil? @errors.empty? ? success_action.call : failure_action.call else complete_action.call end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lev-0.0.3 | lib/lev/handle_with.rb |