В моем routes.rb есть следующее:
resources :message_threads
Когда я звоню:
message_threads_path(1)
Я получил:
/message_threads.1
Почему это? Другие мои ресурсы работают нормально. Я не правильно использую множественное число, что ли?
Ответы:
Да, это ошибка множественного числа.
Передавая ID 1, я предполагаю, что вы хотите отобразить одну запись.
Поэтому вам нужно использовать единственное число message_thread:
message_thread_path(1)
Что даст:
http://localhost:3000/message_threads/1
resources :my_model
или resources :my_models
? (Вам нужно использовать множественное число в файле маршрутов.)
Иногда это также происходит, когда вы не предоставляете параметр: as в своем маршруте:
delete "delete/:id" => "home#delete"
Изменился на:
delete "delete/:id" => "home#delete", as: :delete
(не обращайте внимания на странный пример, мы только что столкнулись с этим для внутреннего приложения, которое мы создаем)
match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get]
моя разметка представления: <%= link_to "Show Details", xyz_show_path(@project) %>
продолжалось создание: http://localhost:3000/xyz/show.1
Изменение файла маршрутов на: match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get], :as => "show"
разрешено: <%= link_to "Show Details", show_path(@project) %>
для работы.
Другие люди, которые приземляются здесь, могут оказаться в такой ситуации:
Если у вас есть единственный ресурс, объявленный в вашем routes.rb
:
resource :map
Вам не нужно передавать объект map_path
. Попытка позвонить map_path(map)
приведет к аналогичному поведению (например, URL-адрес map.12
).