module AjaxLoading class ControllerResource < CanCan::ControllerResource def initialize(controller, name, parent = nil, options = {}) super(controller, name, parent, options) end def load_resource puts "AjaxLoading::load_resource" params = @controller.params if params.has_key?(:associated) ass_params = params[:associated] relation = ass_params["class_name"].constantize.find(ass_params["id"]) association = ass_params["association"] instance_variable_set 'container', ass_params["container"] ||= relation.element_id(:show, association) self.model_instance = relation.send(association) elsif collection_action? self.model_instance = model_class.where('1=1') else super end end private def instance_variable_set(name, value) name = '@'+name unless name.include?('@') @controller.instance_variable_set(name, value) end def instance_variable_get(name) name = '@'+name unless name.include?('@') @controller.instance_variable_get(name) end end end