Gli helper del percorso generano percorsi con punti invece che con barre


89

Nel mio routes.rb ho quanto segue:

resources :message_threads

Quando chiamo:

message_threads_path(1)

Ottengo:

/message_threads.1

Perchè è questo? Le altre mie risorse funzionano bene. Non lo sto pluralizzando correttamente o qualcosa del genere?

Risposte:


142

Sì, questo è un errore di pluralizzazione.

Passando l'ID 1, presumo che desideri visualizzare un singolo record.

Quindi devi usare il singolare "message_thread":

message_thread_path(1)

Che produrrà:

http://localhost:3000/message_threads/1

3
Eh. Succede a tutti noi; frequentemente. Probabilmente non sarà l'ultima volta che vedrai questo errore!
Scott

Ricevo questo stesso errore con una rotta denominata che ho creato e non lo sto pluralizzando. Quale sarebbe la soluzione lì?
kakubei

1
@kakubei, controlla il tuo file dei percorsi. Stai chiamando resources :my_modelo resources :my_models? (Devi pluralizzare nel file dei percorsi.)
JellicleCat

Tutti i miei percorsi sono pluralizzati.
kakubei

1
Sono appena passate le 17:00, stavo per sbattere la testa contro la tastiera, ecco. Grazie uomo.
Phantomwhale

19

A volte questo accade anche quando non fornisci un: come parametro nel tuo percorso:

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

Cambiato in:

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

(ignora lo strano esempio, è capitato che fosse qualcosa che abbiamo appena incontrato per un'app interna che stiamo costruendo)


4
Questo ha funzionato per me. Specificando : as mi ha dato un nome a cui aggiungere "_path" e far sapere a Rails cosa diavolo stavo chiedendo in link_to. In origine, quando il mio file delle rotte aveva: il match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get] mio markup di visualizzazione: <%= link_to "Show Details", xyz_show_path(@project) %> continuava a produrre: http://localhost:3000/xyz/show.1 Cambiare il file delle rotte in: match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get], :as => "show" permesso: <%= link_to "Show Details", show_path(@project) %> per funzionare.
ayang

0

Altre persone che atterrano qui potrebbero trovarsi in questa situazione:

Se hai una singola risorsa dichiarata nel tuo routes.rb:

resource :map

Non è necessario passare un oggetto a map_path. Il tentativo di chiamata map_path(map)risulterà in un comportamento simile (ad esempio un URL simile map.12).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.