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?
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