Bonjour,
Je ne comprends pas pourquoi cette route fonctionne : ‘/users/1/edit’,
alors que pourtant le fichier routes.rb contient ceci :
ActionController::Routing::Routes.draw do |map|
map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’
end
Normalement, d’après la configuration du routage, l’écriture correcte de
cette route devrait être : ‘/users/1/edit’
Bizarrement, en l’ayant testé, elle fonctionne aussi (et donne le même
résultat).
Voici par exemple ce que contient l’action ‘edit’ (générée
automatiquement par un échafaudage sur Rails 2) :
GET /users/1/edit
def edit
@user = User.find(params[:id])
end
Il y a aussi une autre chose que je ne comprends pas. J’ai ajouté dans
un contrôleur cette action :
def listing
@tags = Tag.find(:all)
end
En fait, elle est identique à l’action index. J’ai aussi crée une vue
listing.html.erb. Tout est donc normal il me semble, mais lorsque je
charge la page 0.0.0.0:3000/tags/listing, voici le message d’erreur qui
s’affiche :
ActiveRecord::RecordNotFound in TagsController#show
Couldn’t find Tag with ID=listing
Juste pour essayer, j’ai aussi essayé de charger la page
0.0.0.0:3000/tags/ et là , l’action index est exécuté. Mais si par contre
j’ajoute 0.0.0.0:3000/tags/index, j’ai aussi une erreur qui s’affiche :
ActiveRecord::RecordNotFound in TagsController#show
Couldn’t find Tag with ID=index
Je n’arrive pas à les expliquer, car Rails semble confondre action et
id, alors que mon fichier routes.rb est (je crois) bien configuré (par
défaut).
Merci pour vos lumières