Digamos que quiero admitir los métodos GET y POST en la misma URL. ¿Cómo voy a manejar eso en una acción de controlador de rieles?Cómo manejar múltiples métodos HTTP en la misma acción de controlador de Rails
33
A
Respuesta
60
¿Puede verificar si se trataba de una publicación mediante request.post?
if request.post?
#handle posts
else
#handle gets
end
para obtener sus rutas a trabajar:
resources :photos do
member do
get 'preview'
post 'preview'
end
end
5
Ésta es otra manera. Incluí un código de ejemplo para responder con 405 para los métodos no admitidos y mostrar los métodos compatibles cuando se utiliza el método OPTIONS en la URL.
En app/controllers/foo/bar_controller.rb
before_action :verify_request_type
def my_action
case request.method_symbol
when :get
...
when :post
...
when :patch
...
when :options
# Header will contain a comma-separated list of methods that are supported for the resource.
headers['Access-Control-Allow-Methods'] = allowed_methods.map { |sym| sym.to_s.upcase }.join(', ')
head :ok
end
end
private
def verify_request_type
unless allowed_methods.include?(request.method_symbol)
head :method_not_allowed # 405
end
end
def allowed_methods
%i(get post patch options)
end
En config/routes.rb
match '/foo/bar', to: 'foo/bar#my_action', via: :all
+1
La parte de rutas me ayudó a configurar las cosas como las quería. ¡Gracias! – mjnissim
2
sólo tiene que utilizar esto, utilizar sólo GET y POST en la misma ruta
resources :articles do
member do
match 'action_do-you_want', via: [:get, :post]
end
end
0
puede probar esta
match '/posts/multiple_action', to: 'posts#multiple_action', via: [:create, :patch, :get, :options]
Cuestiones relacionadas
- 1. ASP.NET MVC de múltiples URL a la misma acción
- 2. ¿Cuál es la forma correcta de ejecutar una acción de controlador desde otra acción de controlador sin una redirección HTTP?
- 3. ¿Cómo manejar múltiples tipos de usuario en Rails?
- 4. Cómo devolver HTTP 204 en un controlador de Rails
- 5. Cómo manejar dos operaciones de envío diferentes de la misma forma en un controlador de resorte
- 6. Rails Modelo para llamar acción del controlador
- 7. ¿Múltiples modelos en la misma forma en Rails 3.1?
- 8. La solicitud actual de acción 'Índice' en el tipo de controlador 'DinnersController' es ambigua entre los siguientes métodos de acción
- 9. Permitir múltiples roles para acceder a la acción del controlador
- 10. Mantener un controlador delgado (demasiados métodos de acción)
- 11. Rieles: nombre de la acción del controlador en la cadena
- 12. Cómo manejar múltiples delegados
- 13. Diferentes acciones de controlador para solicitudes POST y GET en la misma ruta en Rails
- 14. ¿Cómo manejar la autenticación HTTP usando HttpURLConnection?
- 15. ¿Cómo obtener el controlador de destino y la acción de la solicitud con Rails 3?
- 16. Anula una acción del controlador de Rails Engine
- 17. Cómo ruta GET y BORRAR solicitudes de la misma url para diferentes métodos de controlador
- 18. ¿Cómo enrutas una acción al controlador de la aplicación en Rails 3?
- 19. Redirigir a la acción en otro controlador
- 20. ¿Cómo manejar múltiples recursos anidados en ActiveAdmin?
- 21. ¿Cómo hacer múltiples llamadas a métodos de clase en la misma línea?
- 22. Rails La acción de caché no caducará
- 23. Grails métodos controlador
- 24. Cómo llegar controlador y nombre de la acción en ZF2
- 25. parámetro persistente en el controlador de Rails
- 26. ASP.NET MVC: ¿puedo tener varios nombres para la misma acción?
- 27. ¿Habilitar múltiples métodos HTTP en una sola operación?
- 28. ASP.NET Web API: ¿Múltiples métodos POST en un controlador?
- 29. ASP.NET MVC métodos de acción de JavaScript
- 30. Múltiples llamadas de WS en una acción, ¿cómo manejar los objetos Promesa?
Perdón por desenterrar esto pero - ¿está compartiendo la misma ruta para dos verbos de alguna manera una mala práctica? –
Creo que puede ser. O puede indicar que su diseño es un poco pobre – Ven
@FelipeAlmeida IMO no es una mala práctica si se usa cuando tiene sentido hacerlo. – Dennis