2012-03-22 5 views
2

Je suis un noob, et j'apprends du livre Beginning Ruby on Rails de Steve Holzner. Il m'a dit de faire un contrôleur appelé hello_controller, modifiez le contrôleur il ditRails Quelque chose ne va pas ... (noob)

class HelloController < ApplicationController 
    def there 
    end 
end 

Il me dit alors de créer un document intitulé there.rhtml en HTML avec un peu simple, et de le mettre dans les vues/bonjour le répertoire. puis, je lance le serveur rails, accédez à localhost: 3000/bonjour/là-bas, et le résultat du HTML doit apparaître sur la page, je vois:

Routing Error 

No route matches [GET] "/hello/there" 

Try running rake routes for more information on available routes. 
+0

et le résultat des «routes de rake» est? –

+2

Aussi, vous pouvez vouloir vérifier la date du livre que vous lisez - si vous utilisez '.rhtml' pour vos vues vous êtes sur une ancienne version de Rails (vous savez, il y a peut-être deux ans, ou encore plus long!! :-). Commencez avec un livre écrit pour Rails 3.1 ou supérieur - beaucoup a changé. –

+0

Il y a une grande explication sur les routes dans un autre message sur SO. [http://stackoverflow.com/questions/5733101/understanding-rails-routes-match-vs-root-in-routes-rb] – Prashanth

Répondre

5

Voir http://guides.rubyonrails.org/routing.html

Vous avez besoin pour ajouter une route au contrôleur hello avec l'action there. si vous ajoutez

match '/hello/there' => 'hello#there' 

à votre fichier itinéraires, le fichier de route est généralement dans

config/route.rb

Par exemple, vous devriez voir que/bonjour/il y aura route vers votre contrôleur et votre action corrects. Cependant, il y a beaucoup plus de choses à savoir sur les routes que ce que je vous montre ici, alors regardez le lien que je vous ai donné!

1

Pour le plus rapide solution, essayez de taper l'adresse suivante dans votre navigateur (notez la fin):

localhost:3000/hello/there/0 

Ken Li a donné quelques bons conseils. Voici un peu d'explication: votre fichier routes est probablement par défaut pour interpréter seulement quelques routes après le modèle /[controller_name]/[action_name], et 'there' n'est pas l'un des rares noms d'actions qu'il reconnaîtra (jusqu'à ce que vous changiez votre fichier routes.rb). Il devrait avoir un fourre-tout, cependant, pour les URL qui suivent le modèle /[controller_name]/[action_name]/[id].

(Ne vous inquiétez pas:.. Votre action n'a pas besoin vraiment faire quoi que ce soit avec l'identifiant à la fin de l'URL Il est juste que votre application Rails reconnaîtra le modèle si l'identifiant est présent)

Questions connexes