2010-11-04 8 views
0

Il y a un certain nombre d'autres questions de routage Rails2 -> 3 mais la mienne est moins complexe et ne me donne pas d'erreur. Alors pourquoi la question? Eh bien, je veux m'assurer que je n'utilise pas de code inutile supplémentaire. Disclaimer: Je suis nouveau sur Ruby/Rails pour apprendre Rails3 via le livre Simply Rails 2 en essayant d'adapter/comprendre toutes les erreurs dans l'espoir d'obtenir une compréhension plus approfondie de la langue. J'ai donc ma première vue, index.html.erb (in app/views/stories). Quand je suis d'abord allé le voir à localhost: 3000/histoires comme le livre a dit que j'ai eu une erreur No route matches "/stories" après avoir changé l'URL à localhost: 3000/histoires/index la page s'est montrée parfaitement.Rails3 routes est-ce le meilleur moyen?

Un regard sur l'routes.rb montre:

Shovell::Application.routes.draw do 
    get "stories/index" 

J'ai créé un second point de vue qui est new.html.erb (dans app/vues/histoires):

<% form_for @story do |f| %> 
<p> 
    name:<br /> 
    <%= f.text_field :name %> 
</p> 
<p> 
    link:<br /> 
    <%= f.text_field :link %> 
</p> 
<p> 
    <%= submit_tag %> 
</p> 
<% end %> 

Cette vue ne s'afficherait à aucune URL que j'ai essayée. En regardant le journal du serveur, j'ai décidé qu'il s'agissait d'une chose de routes. J'ai changé le routes.rb à ceci:

Shovell::Application.routes.draw do 
    get "stories/index" 
    get "stories/new" 

Maintenant, quand je vais à localhost: 3000/stories/nouvelle page fonctionne très bien (même si l'erreur de méthode qui fait partie de l'exercice dans le livre).

Il ne semble pas correct que je devrais entrer manuellement toutes les vues dans routes.rb, il doit y avoir un moyen de définir root et laisser reconnaître tous les fichiers là-bas. Puis-je faire cela?

Répondre

1

Pour votre information http://edgeguides.rubyonrails.org/routing.html

root :to => "stories#index" # This means you render the root url by using stories controller and index action 

resources :stories # The standard way to generate a resource (with index, new, edit, show, create, update, destroy actions automatically defined for you and supports some customization) 

Donc, pour votre cas, en fait le resources :stories vous a donné les urls dont vous avez besoin.

+0

Merci beaucoup, j'ai déjà lu ce guide de bord et je pense qu'à un moment j'avais quelque chose comme 'root => stories/index' qui était un peu sur la bonne voie mais évidemment pas juste. Tout fonctionne bien maintenant! – tehaaron