Tengo una serie de recursos que solo quiero que estén disponibles si se accede a través del formato JS. Los recursos de ruta de Rails me dan los formatos más el HTML estándar. ¿Hay alguna manera de especificar que solo se creen las rutas de formato JS?Rutas de carriles: limitación de los formatos disponibles para un recurso
Respuesta
Usted acaba de añadir restricciones sobre el formato:
resources :photos, :constraints => {:format => /(js|json)/}
A menos que esté haciendo algo mal, eso todavía me permite acceder a/fotos como: html. Aparece el mensaje de plantilla faltante, cuando esperaba una excepción de ruta faltante. ¿Pensamientos? –
¿No debería ser '/ (js | json) /'? – Garrett
Sí, capté eso y lo cambié. Aún no funciona para mí. Tengo recursos: miembros,: controller => 'homes/members',: constraints => {: format =>/js /} –
Se puede utilizar un before_filter
que genera un error de enrutamiento menos que el formato de la petición es MIME::JS
.
app/controllers/application_controller.rb:
class ApplicationController < ActionController::Base
before_filter :check_js
private
def check_js
raise RoutingError.new('expected application/json') unless request.format == MIME::JS
end
end
Aplicar este filtro más quirúrgicamente con :only
, :except
y :skip_before_filter
como cubiertos en los carriles Action Controller Guide
I ' Hemos utilizado un enfoque similar para manejar este tipo de problema https://github.com/marcusg/force_format – marcus3006
Debe envolver esas rutas en un ámbito. Restricciones desafortunadamente no funcionan como se esperaba en este caso.
Este es un ejemplo de un bloque de este tipo ...
scope :format => true, :constraints => { :format => 'json' } do
get '/bar' => "bar#index_with_json"
end
Más información se puede encontrar aquí: https://github.com/rails/rails/issues/5548
Esto debe marcarse como la respuesta. –
Si está utilizando 'resources', no necesita un bloque de ámbito, simplemente agregue': format => true' y ': constraints => ...' directamente a la llamada 'resources'. – Nathan
Esto funcionó en mi caso para una ruta ingeniosa.'resources: photos, format: true, constraints: 'json'' – maicher
¿qué tal
# routes.rb
class OnlyAjaxRequest
def matches?(request)
request.xhr?
end
end
post "/test/suggestions", to: "test#suggestions", :constraints => OnlyAjaxRequest.new
que no llega a la controlador en absoluto. Tomado de railsadventures
Ninguna de las soluciones anteriores funcionó para mí. Terminé yendo con esta solución:
post "/test/suggestions", to: "test#suggestions", :constraints => -> (req) { req.xhr? }
encontrado en https://railsadventures.wordpress.com/2012/10/07/routing-only-ajax-requests-in-ror/#comment-375
Si necesita no sólo una u otra de json
(uso no puede #xhr?
) Te ofrezco opción a continuación
resource :offers, only: :show, format: true, constraints: { format: 'pdf' }
Espero que ayude
- 1. Anteponer prefijo de ruta para todas las rutas de carriles
- 2. carriles - Rutas de fracasar en la implementación
- 3. Cómo limitar los formatos de recursos en el archivo de rutas de Rails
- 4. Invalidar Rutas reparador por defecto en los carriles
- 5. rutas en rieles - eliminación de acciones al configurar un recurso
- 6. Sustitución de las rutas por defecto para un recurso en Rails 3
- 7. Rieles rutas raíz con recurso anidado
- 8. Rutas relativas en el recurso springpath class
- 9. prueba carriles controlador que responde en diferentes formatos
- 10. Tratar con varias rutas de raíz y los ámbitos en los carriles
- 11. ¿Por qué URN es uno de los formatos más populares utilizados para identificar de forma exclusiva el recurso?
- 12. Paso de parámetros a la costumbre rutas de descanso en los carriles (usando: Colección)
- 13. Eclipse: oculta rutas en el cuadro de diálogo "Abrir recurso"
- 14. Reconocer rutas en la consola de carriles Sesión
- 15. ¿Cómo puedo hacer que las rutas de un motor Rails 3 estén disponibles para la aplicación host?
- 16. La dirección futura de los formatos de archivo de ayuda
- 17. ¿Para qué se utilizan los diferentes formatos de archivo gettext?
- 18. Excel cambia los formatos de fecha
- 19. carriles de ayuda dinámica de camino
- 20. Acceso a carriles Rutas RESTful en el modelo
- 21. ¿Para qué se utilizan los diferentes formatos de NameID?
- 22. Probar las rutas de miembros de un recurso en rails3 con rspec
- 23. forma de Javascript para enumerar los complementos disponibles para IE
- 24. ¿Cómo mostrar todas las rutas disponibles en Spring?
- 25. Limitación de velocidad para controladores de rieles
- 26. Limitación de velocidad para evitar un comportamiento malicioso en ExpressJS
- 27. Formatos de archivos 3D para juegos
- 28. Un controlador para múltiples rutas
- 29. Formatos de fecha para las semanas
- 30. Rutas rutas que coinciden con los parámetros de consulta
¿Qué versión de Rails está utilizando? – Garrett
¿Puede aceptar mi respuesta a continuación, es la correcta, la respuesta seleccionada actual es incorrecta y confunde a la comunidad. – koonse