Estoy trabajando en Rails 2.3.11. Si tengo una url como http://www.abc.com/users/e.f.json, espero que la identificación sea 'e.f' y el formato esperado sea 'json'. ¿Puede alguien sugerir una forma de hacerlo? ¡Gracias!Tener un punto en la identificación de las rutas de los rieles
Respuesta
Debido a la convención de formato, Rails analizará todos los parámetros sin ningún punto. Usted puede tener route parameters with dots si quieres:
# You can change the regex to more restrictive patterns
map.connect 'users/:id', :controller => 'users', :action => 'show', :id => /.*/
Pero ya que ambos '*' y '+' comodines de expresiones regulares son codiciosos, ignorará el: param completo (formato.).
Ahora, si es absolutamente necesario tener puntos en el nombre de usuario, no es un pseudo-solución que podría ayudarle a:
map.connect 'users/:id:format', :controller => 'users', :action => 'show', :requirements => { :format => /\.[^.]+/, :id => /.*/ }
map.connect 'users/:id', :controller => 'users', :action => 'show'
La desventaja es que usted tiene que incluir el punto en el Formato de expresiones regulares , de lo contrario, sería capturado por la expresión de nombre de usuario. Luego debe manejar el formato de puntos (por ejemplo, .json) en su controlador.
Aquí hay una solución similar a la de andersonvom, pero lo mantiene todo en una regla (y utiliza algunas abreviaturas de enrutamiento de Rails modernas).
map.connect 'users/:id(.:format)', to: 'users#show', id: /.*?/, format: /[^.]+/
(Nota del .
frente a :format
)
El truco es añadir un formato opcional, (.:format)
y hacer la expresión regular ID no expansivo así se reconoce el formato. Mantenerlo en una regla es importante si desea darle un nombre a la ruta, para que pueda usarla para redirecciones, enlaces, etc. de una manera independiente del formato.
- 1. ¿Cómo cambiar las rutas en ruby en los rieles?
- 2. rutas de recursos sin la identificación del miembro
- 3. ¿cómo obtener todas las rutas en mi aplicación de rieles?
- 4. recursos de guiones en rieles 3 rutas
- 5. Comenzando con los rieles? Debe tener gemas?
- 6. ¿Las rutas angulares pueden tener valores de parámetros predeterminados?
- 7. rutas relativas para acceder a los recursos de rieles
- 8. rutas en rieles - eliminación de acciones al configurar un recurso
- 9. Rieles 3, rutas poco profundas
- 10. ¿Cómo se llaman dinámicamente las rutas de ayuda en los rieles?
- 11. ¿Cómo pruebo las rutas en los complementos de Rails 3?
- 12. Backbone y rieles Rutas anidadas
- 13. Cómo preinstalar rieles ver rutas en rieles 3.2 (ActionView :: PathSet)
- 14. Rieles before_filter e identificación de acción
- 15. rieles Identificación automática de la asignación que ya existe
- 16. ¿Cómo establecer correctamente las rutas de ejecución, las rutas de búsqueda y los nombres de instalación?
- 17. Falta el diseño de las rutas de ayuda dentro de las vistas de los rieles del motor
- 18. Identificación de segmentos de rutas comunes desde las pistas de GPS
- 19. Enrutamiento de rieles: rutas personalizadas para Recursos
- 20. Índices predeterminados en la columna de identificación?
- 21. ¿Es posible tener una llave foránea compuesta en los rieles?
- 22. rutas Configuración de Rieles basado en cadena de consulta
- 23. Obtener rutas absolutas de todos los archivos en un directorio
- 24. Rieles rutas raíz con recurso anidado
- 25. Acceso a las rutas de los raíles en javascript
- 26. ¿Es normal tener dos elementos con la misma identificación en dos elementos div con otra identificación?
- 27. Rieles: ¿Cómo puedo deshabilitar algunas rutas predeterminadas?
- 28. personalizar la URL de los rieles con nombre de usuario
- 29. rieles usando link_to con rutas de nombres de espacio
- 30. ¿Cómo se estructuran las rutas de URL?
No estoy familiarizado con la sintaxis de ruta en 2.3, pero puede intentar agregar una restricción al formato para no permitir períodos. Esto debería ayudar a mantener el formato solo en el último segmento separado por puntos, pero si deja el formato va a terminar con parte de su ID como formato. – coreyward
posible duplicado de [Rieles - Parámetros con "punto" (por ejemplo, /google.com)](http://stackoverflow.com/questions/2952235/rails-params-with-dot-e-g-google-com) –