Quelqu'un peut-il m'expliquer, en termes clairs et simples, en quoi consiste l'accord avec des ressources cartographiées et des itinéraires nommés dans Ruby on Rails?

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

Question

J'utilise Ruby pour la première fois dans mon travail pour un projet. Je suis donc encore un peu en train d'apprendre les ficelles du métier (et de l'aimer à chaque minute).

Bien que je comprenne le sens des fonctions map.connect dans le fichier route.rb, je ne comprends pas les "ressources". et "itinéraire nommé" caractéristiques de Rails. J'ai mon livre Rails ici et je l'ai relu plusieurs fois, mais je ne le comprends toujours pas. Les itinéraires nommés que je reçois un peu - je pense qu’il s’agit de règles définies explicitement ou calculées par un bloc de code, mais les ressources sont un mystère complet pour moi; La seule chose que j’ai éclairée, c’est que vous n’AVEZ BESOIN d’eux que si vous voulez utiliser des outils très utiles, comme pouvoir appeler «resource_path» (et sa formidable famille de méthodes connexes).

Mon projet actuel a:

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

.. mais mon livre Rails a ce super génial "has_many". et " seulement " tapez des hachages et des paramètres en les suspendant et je ne peux pas déterminer exactement quand je suis censé les utiliser, ni quels sont les avantages

Est-ce que quelqu'un peut me remettre en ordre?

Était-ce utile?

La solution

Les itinéraires nommés ne sont que cela. une route avec un nom attaché, de sorte que vous puissiez facilement vous y référer lorsque vous souhaitez générer une URL. Entre autres choses, cela peut éliminer l’ambiguïté.

Une ressource est fondamentalement une "chose" que vous souhaitez pouvoir manipuler. Lorsque vous définissez le terme "sections" comme une ressource, vous dites: "Je souhaite un itinéraire pour obtenir toutes les sections. Je veux un itinéraire pour ajouter une nouvelle section. Je veux un itinéraire pour éditer une section existante. Je souhaite un itinéraire pour supprimer une section. & Quot; Ce genre de chose. Ces itinéraires pointent vers des noms de méthodes standardisés tels que index , nouveau , modifier , etc. Chacune de ces routes aura un nom attribué en fonction de ce qu'il est; donc il existe maintenant une route nommée 'edit_section' .

Le paramètre : has_many vous permet de dire qu'un certain type de chose a des sous-choses. Par exemple, vous pouvez dire map.resources: sections,: has_many = > [: questions] . Cela signifie qu'une question appartient à une section et sera reflétée dans l'URL et la route. Vous obtiendrez des URL telles que '/ sections / 27 / questions / 12' et des itinéraires nommés tels que 'section_questions' .

Le paramètre : uniquement indique que "n'effectuez que des itinéraires pour ces actions"; vous pouvez l'utiliser si vous souhaitez uniquement autoriser la création de listes, l'affichage et l'ajout d'éléments, et non la modification ou la suppression.

Autres conseils

Honnêtement, le Guide de routage Rails vous donnera une bonne explication en termes aussi simples que Tu peux recevoir. Sachez simplement qu’un itinéraire de ressource == itinéraire RESTful et que vous êtes prêt à partir.

Nous avons tous eu du mal à comprendre les ressources et REST lorsque DHL l'a présentée à la communauté Rails lors du premier RailsConf en 2006, il n'est donc pas étonnant que vous ayez du mal à saisir le concept.

Je reconnais qu’il existe aujourd’hui des explications bien meilleures et plus récentes sur les concepts, mais à l’époque, juste après le discours de David, j’ai écrit un article de blog dans lequel, après avoir discuté avec d'autres participants à la conférence, j'ai essayé de comprendre et d'expliquer. Cela pourrait vous aider, car il ne va pas de soi que vous sachiez tout sur REST comme le font les articles les plus récents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top