How do I use an instance of another Controller as service object?

Hello !

How do I use an instance of another controller as service Object?

Personally, my problem-case is that I have a ActsAsPolymorphicTree Concern with a polymorphic join table, such that db_records of different types can be parent and children of each other.

The join table model “TreeLeafs” has a controller TreeLeafsController and the route takes the type and id of a parent and a child db_record.

So I have a multiplexer that is supposed to do what I ask for in the title.

I want the multiplexer to get the controller/record_type and action from the route and create an instance of the suchlike controller in order to render or invoke actions like “new” when I need a new instance variable of that kind.

it looks something like this then

controller_name = “#{resource_type.camelize.pluralize}”+“Controller”
controller_klass = Object.const_get(controller_name)
controller = controller_klass.new
request.filtered_parameters[:controller] = controller_name
controller.params = params
controller.request = request
controller.response = response
controller.send sym_controller_action

What would be the correct way to retrieve a newly created instance from this controller-service-object for instance? Can I somehow extract it from the request ?

Also it doesn’t work to call render on the controller instance. The view doesn’t have the instance variables created in the action at its disposal.

Thanks