class ViewObject::Dispatcher
Public Class Methods
dispatch_view_object(controller)
click to toggle source
@brief : Route毎にViewObjectをControllerとViewにDispatchする
# File lib/view_object/dispatcher.rb, line 4 def self.dispatch_view_object(controller) vo = make_view_object(controller) controller.instance_variable_set( :@view_object, vo ) end
make_view_object(controller)
click to toggle source
# File lib/view_object/dispatcher.rb, line 12 def self.make_view_object(controller) name = vo_class_name(controller) vo_class = ActiveSupport::Dependencies.constantize(name) vo = vo_class.new vo.instance_variable_set( :@controller, controller ) #do callback if vo.respond_to?(:after_initialize) vo.after_initialize end vo end
vo_class_name(controller)
click to toggle source
# File lib/view_object/dispatcher.rb, line 29 def self.vo_class_name(controller) route_path = ViewObject.config.routes_path if route_path.present? && route_path.last != '/' route_path += '/' end paths = route_path + controller.params[:controller] + '/' + controller.params[:action] ret = paths.split('/').map { | path | path.camelcase }.join('::') ret += 'ViewObject' ret end