En mi route.rb tengo lo siguiente:
resources :message_threads
Cuando llamo:
message_threads_path(1)
Yo obtengo:
/message_threads.1
¿Por qué es esto? Mis otros recursos funcionan bien. ¿No estoy pluralizando esto correctamente o algo así?
Respuestas:
Sí, este es un error de pluralización.
Al pasar el ID 1, supongo que desea mostrar un solo registro.
Entonces necesitas usar el singular 'message_thread':
message_thread_path(1)
Que cederá:
http://localhost:3000/message_threads/1
resources :my_modelo resources :my_models? (Necesita pluralizar en el archivo de rutas.)
A veces, esto también ocurre cuando no proporciona un parámetro: as en su ruta:
delete "delete/:id" => "home#delete"
Cambiado a:
delete "delete/:id" => "home#delete", as: :delete
(ignore el ejemplo extraño, resultó ser algo que acabamos de encontrar para una aplicación interna que estamos construyendo)
match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get] mi marcado de vista: <%= link_to "Show Details", xyz_show_path(@project) %> seguía produciendo: http://localhost:3000/xyz/show.1 Cambiando el archivo de rutas a: match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get], :as => "show" permitido: <%= link_to "Show Details", show_path(@project) %> para que funcione.
Otras personas que aterrizan aquí podrían estar en esta situación:
Si tiene un recurso singular declarado en su routes.rb:
resource :map
No es necesario que le pases un objeto map_path. Intentar llamar map_path(map)resultará en un comportamiento similar (es decir, una URL como map.12).