Pomijając kwestię czy jest mądry, aby to zrobić, odpowiedź „jest to możliwe” brzmi „tak”:
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
Zasadniczo odwzorowujący trasa może przyjąć dowolną aplikację Rack jako punkt końcowy. Nasza prosta aplikacja analizuje ciąg zapytania, buduje nazwę kontrolera i wywołuje metodę ActionController action
(która sama jest aplikacją typu Rack). Nie pokazano: jak radzić sobie z ciągów zapytań z dowolnym formacie innym niż 'o=<controller_name>'
widzę tylko redirect_ti opcji w sterowniku w tym przypadku – apneadiving