101 votes

Les aides aux chemins génèrent des chemins avec des points au lieu de barres obliques.

Dans mon routes.rb, j'ai ce qui suit :

resources :message_threads

Quand j'appelle :

message_threads_path(1)

J'ai compris :

/message_threads.1

Pourquoi ? Mes autres ressources fonctionnent bien. Je n'utilise pas le pluriel correctement ou quelque chose comme ça ?

154voto

Scott Lowe Points 9412

Oui, c'est une erreur de pluralisation.

En passant l'ID 1, je suppose que vous souhaitez afficher un seul enregistrement.

Vous devez donc utiliser le singulier "message_thread" :

message_thread_path(1)

Ce qui donnera :

http://localhost:3000/message_threads/1

4 votes

Heh. Cela nous arrive à tous ; fréquemment. Ce ne sera probablement pas la dernière fois que vous verrez cette erreur !

0 votes

J'obtiens cette même erreur avec une route nommée que j'ai créée et je ne la mets pas au pluriel. Quelle serait la solution ?

1 votes

@kakubei, vérifiez votre fichier de routes. Est-ce que vous appelez resources :my_model o resources :my_models ? (Vous devez mettre le pluriel dans le fichier des routes).

20voto

Jamon Holmgren Points 7176

Parfois, cela se produit également lorsque vous ne fournissez pas un :comme paramètre dans votre route :

delete "delete/:id" => "home#delete"

Changé en :

delete "delete/:id" => "home#delete", as: :delete

(ignorez l'exemple bizarre, il s'agit d'un cas que nous venons de rencontrer pour une application interne que nous construisons).

5 votes

Cela a marché pour moi. Spécifier :as m'a donné un nom auquel je pouvais ajouter "_path" pour que Rails sache ce que je demandais dans link_to. A l'origine, quand mon fichier routes avait : match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get] mon marquage de vue : <%= link_to "Show Details", xyz_show_path(@project) %> a continué à produire : http://localhost:3000/xyz/show.1 Changer le fichier des routes en : match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get], :as => "show" autorisé : <%= link_to "Show Details", show_path(@project) %> pour travailler.

1voto

techpeace Points 916

D'autres personnes qui débarquent ici pourraient être dans cette situation :

Si vous avez une ressource singulière déclarée dans votre routes.rb :

resource :map

Il n'est pas nécessaire de passer un objet à la fonction map_path . Tentative d'appel map_path(map) donnera lieu à un comportement similaire (c'est-à-dire qu'une URL du type map.12 ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X