Aunque generalmente va en contra de nuestros principios de diseño, necesitamos que un controlador ejecute su acción #create
en una solicitud GET (es parte de un flujo de trabajo que involucra una serie de redirige para un servicio externo). ¿Alguien sabe cuál es la forma prevista de hacer esto? Realmente no quiero salir del ingenioso marco de enrutamiento proporcionado por las rutas de Rails. No necesitamos la acción #index
que normalmente respondería a esa solicitud GET.Rutas ingeniosas, pero con la acción #create usando GET en lugar de POST
que encontré (sorprendentemente) que esto funciona, pero no sé si es la intención, o si estaríamos explotando un error en Rails y riesgos de rotura después de la línea:
resources :agreements, :except => [:index, :create] do
get :create, :on => :collection
end
Si get :create
que era get :something
, habríamos tenido una ruta como
Helper: something_agreement_path
Request: GET /agreements/:agreement_id/something
Action: agreements#something
Pero rieles realidad genera lo que queremos:
Helper: agreements_path
Request: GET /agreements
Action: agreements#create
Error o característica?
Gracias, voy a leer sobre esto. Pensé que se trataba de la * implementación *, que es lo que me preocupa ... si no es el * comportamiento * previsto, entonces esto se romperá en algún momento. Tal vez debería definir una acción diferente de '# create'; Ahora tengo curiosidad si hay un enfoque intencionado para cambiar el verbo HTTP utilizado para cada acción :) Podemos cambiar la ruta, pero aparentemente no el verbo. – d11wtq