Rails define un montón de magia con rutas con nombre que hacen que los ayudantes de sus rutas. A veces, especialmente con rutas anidadas, puede ser un poco confuso hacer un seguimiento de qué URL obtendrá para una llamada de método de ayuda de ruta determinada. ¿Es posible, usando la consola de Ruby, ver qué enlace generará una función auxiliar determinada? Por ejemplo, dado un helper nombrado como post_path (post), quiero ver qué URL se genera.Rieles: Compruebe la salida del asistente de ruta desde la consola
Respuesta
Puede mostrarlos directamente con rake routes
.
En una consola de Rails, puede llamar al app.post_path
. Esto funcionará en Rails ~ = 2.3 y> = 3.1.0.
también puede
include Rails.application.routes.url_helpers
desde el interior de una sesiones de consola para tener acceso a los ayudantes:
url_for controller: :users, only_path: true
users_path
# => '/users'
Esto es mucho más fácil que la solución anterior IMO – Andrew
esta es la respuesta correcta a la pregunta original en mi opinión – nemesisdesign
Esta debería ser la mejor respuesta IMO –
En la consola de Rails, la aplicación variable contiene un objeto de sesión en la que se puede llamar ruta y Ayudantes de URL como métodos de instancia.
app.users_path
Recuerde si la ruta es el nombre a un espacio, como:
product GET /products/:id(.:format) spree/products#show
A continuación, intente:
helper.link_to("test", app.spree.product_path(Spree::Product.first), method: :get)
salida
Spree::Product Load (0.4ms) SELECT "spree_products".* FROM "spree_products" WHERE "spree_products"."deleted_at" IS NULL ORDER BY "spree_products"."id" ASC LIMIT 1
=> "<a data-method=\"get\" href=\"/products/this-is-the-title\">test</a>"
Siempre se puede CHEC k la salida de path_helpers
en la consola. Sólo tiene que utilizar el ayudante con app
app.post_path(3)
#=> "/posts/3"
app.posts_path
#=> "/posts"
app.posts_url
#=> "http://www.example.com/posts"
- 1. Rieles Compruebe si la consola IRB o la página web
- 2. Ejecutar migraciones desde la consola de rieles
- 3. rieles - Reorientación de salida de la consola a un archivo
- 4. Salida a la consola de Chrome desde Node.js
- 5. Recargue la consola de rieles
- 6. PowerShell: envíe la salida de la consola al archivo sin ensordecer esta salida de la consola
- 7. ¿cómo puedo ejecutar un inicializador desde la consola de rieles?
- 8. Compruebe si la salida se redirige
- 9. Salida de la consola MATLAB
- 10. Conseguir salida de la consola del tarro en C#
- 11. Ver la salida de la consola eliminada
- 12. Compruebe si la consola está presente
- 13. ¿No hay salida a la consola desde una aplicación WPF?
- 14. vbscript salida a la consola
- 15. rieles entorno por defecto de la consola
- 16. Windows desde la consola
- 17. ¿La consola de los rieles es dinámica?
- 18. android dibujable desde la ruta del archivo
- 19. Rieles 3, compruebe la codificación del archivo CSV antes de la importación
- 20. Visualización de la salida de la consola NUnit en CruiseControl.NET
- 21. C++ cambio de salida en la consola
- 22. Salvar la salida de la consola en Chrome
- 23. rieles ActiveRecord encontramos en la consola
- 24. La consola de Eclipse no muestra la salida completa
- 25. cómo agregar datos a la base de datos desde la consola de rieles
- 26. Rieles, obtenga la ruta del recurso en el modelo
- 27. Rieles: ruta a la acción del controlador personalizado
- 28. Desactivando la salida de la consola de registro de hibernación
- 29. Consola de salida XCode 4 a la derecha del área del editor de código?
- 30. Redirigir la salida de seguimiento a la consola
acaba en un seguimiento de mi propio comentario, parece que esto es posible a partir de 3 carriles de la consola, en caso de que esté utilizando. En primer lugar, se adhieren una solicitud falsa en su objeto de aplicación, llamando a algo así como 'app.get "/"' a continuación, sólo instance_eval los métodos deseados, ya que ahora están protegidos por defecto. Algo así como: 'app.instance_eval {post_path (post)}' – Chubas
El comentario de Chubas anterior funcionó en Rails 3. Esto es muy útil al escribir pruebas, así que no tengo que esperar 1 minuto para descubrir que la ruta es incorrecto. Además, es genial probar y recibir y publicar llamadas. No necesita llamar a app.get primero. –
'app.foo_path' parece funcionar en Rails 3.1.0. –