Encore assez nouveau sur Rails, donc si je prends la mauvaise approche, s'il vous plaît n'hésitez pas à me distendre.Comment créer des routes pour un contrôleur qui ne fait rien avec des modèles dans Rails?
Comment est-ce que je fais savoir à routes.rb qu'il y a un contrôleur de racine plein d'actions qui ne manipulent pas les modèles, tout en préservant les méthodes d'aide d'itinéraire? Je voudrais à répondre à des demandes comme celles-ci:
http://localhost/download
http://localhost/share
avec des aides d'itinéraire comme
download_app_path
share_path
mais sans routes statiques nommées comme celles-ci:
match '/download' => 'site#download', :as => :download_app
match '/share' => 'site#share', :as => :share
d'un SiteController qui doesn Ne créez pas, ne montez pas ou ne manipulez pas les modèles de mon application.
J'ai essayé d'utiliser une approche comme celui-ci, mais il fonctionne sans générer les aides d'itinéraire (naturellement)
match '/:action', :controller => 'site'
je pourrais théoriquement faire sans les aides de route, mais je pense qu'ils sont un peu plus facile lire plutôt que de passer des hachages d'options url à des méthodes link_to ou form.
Existe-t-il un moyen d'accomplir un contrôleur racine plus ingénieux, ou est ce que j'essaie de faire non conventionnel pour Rails?
Modifier
Pour plus de clarté, voici ce que cette classe SiteController ressemble:
class SiteController < ApplicationController
def download
@custom_options = { .. }
end
def share
@custom_options = { .. }
end
def about
end
end
Son but est de me permettre de collectionne les pages qui n'interagissent avec les ressources (comme les utilisateurs ou Amitiés) dans un seul contrôleur et maintenez-les tous en un seul endroit. J'essaie de configurer ce contrôleur en tant que contrôleur racine de l'application - de sorte que tous les chemins de ce contrôleur seront directement hors de l'hôte de l'application (myapp.com/download)
Merci d'avance!
Vous semblez suggérer que je casse les actions «télécharger» et «partager» de SiteController.rb et en faire les actions d'index de leurs propres contrôleurs distincts, est-ce exact? En outre, les options: only et: except semblent ne fonctionner que sur les routes par défaut; ils n'exposent pas les actions personnalisées 'download' ou 'share' à routes.rb lorsqu'une requête est entrante, ce qui me ramène à la définition statique d'une route pour obtenir le chemin désiré. – BrMcMullin
Peut-être que je ne comprends pas ce que vous essayez de faire ... y a-t-il une "ressource" que vous voulez fournir pour le téléchargement et le partage? alors vous pourriez faire une approche différente. – phoet
Non, aucune ressource n'est interagi avec ou fournie autrement. Jetez un oeil à mon édition, j'espère que cela permettra de comprendre le rôle de SiteController. – BrMcMullin