Хотя это в целом противоречит нашим принципам проектирования, нам нужно, чтобы контроллер выполнял действие #create
на GET-запросе (это часть рабочего процесса, который включает в себя серию перенаправлений для внешнего сервиса). Кто-нибудь знает, как это делается? Я не очень хочу выходить за пределы ресурсоемких рамок маршрутизации, предоставляемых маршрутами Rails. Нам не нужно действие #index
, которое обычно отвечает на этот GET-запрос.
Я обнаружил (на удивление), что это работает, но я не знаю, так ли это задумано, или мы используем ошибку в Rails и рискуем сломаться позже:
resources :agreements, :except => [:index, :create] do
get :create, :on => :collection
end
Если бы этот get :create
был get :something
, у нас был бы маршрут вроде
Helper: something_agreement_path
Request: GET /agreements/:agreement_id/something
Action: agreements#something
Но Rails действительно генерирует то, что мы хотим:
Helper: agreements_path
Request: GET /agreements
Action: agreements#create
Ошибка или особенность?