2010-10-26 6 views
0

Je commence juste avec des rails et j'ai un cas très simple. J'ai un contrôleur "à la maison". Il y a une action 'index' définie dans ce contrôleur. Quand je vais à ~/home, je reçois une erreur msg disant:Routage des questions avec des rails

uninitialized constant HomesController (J'ai remarqué le singulier/pluriel chose).

C'est la première chose que je ne comprends pas (je pensais que ça irait automatiquement à ~/home/index).

La deuxième chose, si je vais à ~/home/edit (notez que cette action n'existe pas encore), je reçois aussi: uninitialized constant HomesController Mais si je vais à ~/home/show (spectacle n'existe pas aussi bien) Je reçois un autre message d'erreur:

No route matches "/home/show" 

Comment puis-je obtenir 2 erreurs différents pour la même raison (action inexistante). Et quel est le problème avec cette constante?

Merci

Modifier Je rails de roulement 3.0

Voici mon fichier routes.rb

Topnotch::Application.routes.draw do 
    resources :subscriptions 
    resource :home 

    get "home/index" 

    get "subscriptions/index" 

    root :to => "home#index" 
end 
+0

Quelle version de rails utilisez-vous et qu'est-ce que vous avez actuellement dans 'routes.rb'? –

+0

rails 3. Je viens d'éditer la question originale. –

Répondre

1

Il s'avère que les routes étaient correctes Je ne les utilisais pas correctement! rake routes aidé.

1
  1. Vous devez ajouter la ressource "maison" à la route.rb.
  2. Les contrôleurs sont considérés comme pluriels. Si vous êtes nouveau sur les rails, je vous suggère de commencer à utiliser des générateurs - il suffit d'ouvrir un terminal dans le dossier du projet et tapez "script/generate échafaudage" (dans rails3 ce serait "rails g home")
+0

J'ai utilisé le générateur pour générer un contrôleur (je n'avais pas besoin d'un modèle pour mon contrôleur domestique!). Aussi, j'ai déjà une ressource pour la maison dans route.rb). Suis-je obligé de choisir un nom pluriel pour le contrôleur? –

1

Modifie la route racine comme ci-dessous: -

racine: à => "maisons # index".

Vous devez utiliser le pluriel dans les routes.

Questions connexes