class Stepper::ControllerResource
Public Class Methods
add_before_filter(controller_class, *args)
click to toggle source
Sets up before filter in controller_class
for create
, update
, new
and next_step
actions. First argument can be name of resource. For example we have CompaniesController
and want to load or build resource to +@my_company+ variable:
add_before_filter CompanyController, :my_company
First argument it isn't required:
add_before_filter CompanyController
In this case resource will be loaded or built into +@company+ variable
# File lib/stepper/controllers/controller_resource.rb, line 12 def self.add_before_filter(controller_class, *args) resource_name = args.first if args.first.is_a?(Symbol) or args.first.is_a?(String) options = args.extract_options! controller_class.send(:before_filter, :only => [:create, :update, :new, :next_step]) do |controller| controller.instance_variable_set :@_stepper_redirect_to, options[:redirect_to] || {} controller_resource = controller.class.stepper_resource_class.new(controller, resource_name) controller.instance_variable_set :@_stepper_resource_instance, controller_resource.load_resource controller.instance_variable_set :@_stepper_name, controller_resource.name end end
new(controller, *args)
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 23 def initialize(controller, *args) @controller = controller @params = controller.params @name = args.first end
Public Instance Methods
load_resource()
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 29 def load_resource self.resource_instance ||= load_resource_instance self.resource_instance.attributes = @params[name] unless @params[name].blank? self.resource_instance end
load_resource_instance()
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 35 def load_resource_instance if ['create', 'new'].include? @params[:action] resource = resource_class.new(@params[name] || {}) else resource = unless @params[:id].blank? resource_class.find(@params[:id]) else resource_class.new end end resource end
name()
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 56 def name @name || name_from_controller end
name_from_controller()
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 52 def name_from_controller @params[:controller].sub("Controller", "").underscore.split('/').last.singularize end
resource_class()
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 48 def resource_class name.camelize.constantize end
resource_instance()
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 64 def resource_instance @controller.instance_variable_get "@#{name}" end
resource_instance=(object)
click to toggle source
# File lib/stepper/controllers/controller_resource.rb, line 60 def resource_instance=(object) @controller.instance_variable_set "@#{name}", object end