¿Puede alguien explicarme en términos claros y sencillos sobre el trato con los recursos asignados y las rutas con nombre en Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/1801756

Pregunta

He estado usando Ruby por primera vez en un proyecto en mi trabajo, así que todavía estoy aprendiendo un poco las cuerdas (y amando cada minuto).

Si bien entiendo el punto de las funciones map.connect en el archivo route.rb, no entiendo los " recursos " y "ruta nombrada" Características de los carriles. Tengo mi libro de Rails aquí y lo leí varias veces, pero todavía no lo entiendo. Las rutas nombradas que recibo un poco - creo que son reglas, ya sea explícitamente definidas o calculadas por un bloque de código, pero los recursos son un completo misterio para mí; Lo único que les he dicho es que simplemente los NECESITA si quiere que funcionen algunas de las mejores cosas, como poder llamar 'resource_path' (y su increíble familia de métodos relacionados).

Mi proyecto actual tiene:

map.resources :application_forms
map.resources :sections
map.resources :questions
map.resources :seed_answers
map.resources :question_types
map.resources :form_questions
map.resources :rules
map.resources :form_rules

..pero mi libro Rails tiene este tipo impresionante " has_many " y "solo" Escriba hashes y parámetros que cuelgan de ellos y no puedo calcular exactamente cuándo debo usarlos, ni cuál es el beneficio.

¿Alguien puede enderezarme?

¿Fue útil?

Solución

Las rutas nombradas son solo eso; una ruta con un nombre adjunto, para que pueda consultarla fácilmente cuando desee generar una URL. Entre otras cosas, puede eliminar la ambigüedad.

Un recurso es básicamente una 'cosa' que desea tener rutas para manipular. Cuando define que 'secciones' es un recurso, lo que está haciendo es decir "Quiero una ruta para obtener todas las secciones". Quiero una ruta para agregar una nueva sección. Quiero una ruta para editar una sección existente. Quiero una ruta para eliminar una sección. & Quot; Esa clase de cosas. Estas rutas apuntan a nombres de métodos estandarizados como index , new , edit , etc. Cada una de estas rutas tendrá un nombre asignado en función de lo que es; así que ahora hay una ruta llamada 'edit_section' .

El parámetro : has_many le permite decir que cierto tipo de cosas tiene sub-cosas. Por ejemplo, puede decir map.resources: secciones,: has_many = > [: preguntas] . Esto significa que una pregunta pertenece a una sección, y esto se reflejará en la url y la ruta. Obtendría URL como '/ secciones / 27 / preguntas / 12' y rutas con nombre como 'section_questions' .

El parámetro : only dice " solo crea rutas para estas acciones " ;; puede usarlo si solo desea permitir el listado, la visualización y la adición de elementos, no la edición o eliminación.

Otros consejos

Honestamente, la Guía de enrutamiento de Rails le dará una buena explicación en términos tan simples como puedes obtener. Solo debes saber que una ruta de recursos == ruta RESTful y listo.

Todos luchamos por comprender los recursos y REST cuando DHH lo presentó a la comunidad de Rails en la primera RailsConf en 2006, por lo que no es de extrañar que tenga problemas para comprender el concepto.

Admito que hay explicaciones mucho mejores y más actualizadas de los conceptos de hoy, pero en ese momento, justo después de la nota clave de David, escribí un publicación de blog en la que, de la discusión con otros asistentes a la conferencia, traté de entenderlo y explicarlo. Podría ayudarlo, ya que no da por sentado que sabe todo sobre REST como lo hacen los artículos más recientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top