La réponse rapide (et inutile) est que l'une ou l'autre façon fonctionne bien.
Je pense que tout le monde vient à travers cette décision à un moment donné, et la décision que vous prenez dépend de l'avenir probable du site ... ce qui signifie qu'il est enclin à l'optimisation prématurée ... mais c'est toujours la prise,
Comme vous l'avez probablement déjà deviné, "home" est à la fois un verbe et un nom, donc pourquoi vous n'arrivez pas à savoir quoi faire.
La réponse dépend d'une combinaison d'interprétation de la structure de votre site et combien de temps est disponible pour vous ...
si vous avez très peu de temps pour travailler sur ce ...Ensuite, le fait de bourrer l'action 'home' dans un autre contrôleur est souvent considéré comme l'option appropriée. Cela fonctionne, il vous permet de passer à d'autres tâches (probablement plus productives).
Cependant, je suis d'accord qu'il est parfois bon de prendre du recul et de réfléchir à ce que vous faites et si cela pourrait être fait "mieux" ... dans ce cas, mais il est plus difficile de définir car il est peu probable que l'action de la maison dans un nouveau contrôleur soit plus rapide ... et si c'est la seule action dans le contrôleur ... on peut se demander s'il vaut mieux, architecturalement, l'ajouter à un contrôleur existant ... Nous commençons donc ce qui est surtout un débat philosophique ... en d'autres termes, aucune réponse ne sera «plus correcte» que l'autre - c'est plutôt une question de goût et de circonstance. Dans ce cas, le débat s'articule autour de rendre la structure plus RESTful. Pour être fidèle à l'architecture RESTful, vous devez déplacer l'action dans son propre contrôleur ... mais vous devez d'abord identifier l'entité. La page d'accueil n'est souvent pas facilement identifiable en tant qu'entité db spécifique ... c'est plus souvent une page de portail. Parfois, vous pouvez choisir une entité, par exemple, les boutiques en ligne auront souvent une page d'accueil qui est en fait une variation de "produits # index", ou parfois la page "d'accueil" est une page d'affichage # d'utilisateur ... mais plus souvent, votre page d'accueil ne sera pas simple, et combinera des informations provenant de plusieurs entités ... alors pourquoi il est difficile de décider quelle sera la «bonne» architecture.
Si vous ne pouvez pas identifier une entité spécifique, il existe un débat valide quant à l'opportunité de déplacer l'action dans un contrôleur spécifique. Cependant, vous pouvez toujours créer une nouvelle "entité" centrée autour de l'architecture du site. Ceci est particulièrement probable si vous allez trouver d'autres pages non spécifiques à l'entité pour le site (par exemple T & Cs ou une page "sur notre société").
La fallback habituelle étant un « PageController » (ou nom similaire) qui n'est pas liée à un enregistrement actif modèle, mais à une entité plus nébuleux, dans ce cas, une « page » qui est reconnaissable à un utilisateur du site Web (par exemple la "page d'accueil" et la page "T & C" et la "page"). Chaque action serait pour une page spécifique ...
Alors, c'est à vous de décider si cela correspond mieux à votre vision de l'architecture de votre système ... et si ça en vaut la peine ... mais c'est mon point de vue sur le débat. :)
"Toutefois REST ne correspond pas vraiment à un paramètre de navigateur Web." Wow, ça va être un choc pour Roy Fielding, le gars qui a inventé le nom REST. Il a extrait la définition de REST en fonction de la manière dont fonctionnent les applications Web performantes. Le fait que ROR a créé ces/edit et/nouveaux points de terminaison est le reflet de l'utilisation abusive de REST de REST pas un manque d'applicabilité. –
Eh bien, cela n'a pas répondu à la question de savoir quand doit-on séparer le code dans un nouveau contrôleur. Je vois les contrôleurs comme des objets contextuels et des méthodes comme leur comportement. La question demeure toujours que donné un morceau de code, comment je sais que j'ai besoin d'un nouveau contrôleur pour ce code ou devrait-il juste être une action ou un ensemble d'actions dans un contrôleur existant. Si l'on pouvait donner une solution avec des raisons de ce qu'il faut faire dans le cas de la page 'home' (comme indiqué dans la question), cette question recevrait une réponse automatique. – Chirantan
@Darrel - Je ne dis pas que REST ne fonctionne pas sur le web, c'est un paradigme utile pour les services HTTP. Mais la façon dont il n'y a pas de réflexion sur le service sans ajouter de formulaires HTML supplémentaires est un problème lorsque vous l'utilisez dans des applications Web. En outre, les navigateurs ne prennent généralement en charge que les verbes GET et POST, avec d'autres solutions de contournement nécessaires pour permettre l'utilisation des autres verbes. – Gareth