Dejando a un lado la cuestión de si es prudente hacerlo, la respuesta a "¿es esto posible" es 'sí':
class QueryControllerApp
def self.call(env)
controller_name = env['QUERY_STRING'].split('=').last
controller = (controller_name.titleize.pluralize + "Controller").constantize
controller.action(:update).call(env)
rescue NameError
raise "#{controller_name} is an invalid parameter"
end
end
MyRailsApp::Application.routes.draw do
put 'posts/update/:id' => QueryControllerApp
end
Básicamente, el asignador de ruta puede aceptar cualquier aplicación Rack como criterio de valoración. Nuestra sencilla aplicación analiza la cadena de consulta, crea el nombre del controlador y llama al método ActionController action
(que a su vez es una aplicación Rack). No se muestra: cómo tratar cadenas de consulta con cualquier formato que no sea 'o=<controller_name>'
sólo ver las opciones redirect_ti en el controlador en este caso – apneadiving