Помічники шляхів генерують шляхи з крапками замість косих рисок


89

У моїх маршрутах.rb у мене є таке:

resources :message_threads

Коли я телефоную:

message_threads_path(1)

Я отримав:

/message_threads.1

Чому це? Інші мої ресурси працюють нормально. Хіба я не правильно це плюралізую чи щось?

Відповіді:


142

Так, це помилка плюралізації.

Передаючи ідентифікатор 1, я припускаю, що ви хочете показати один запис.

Отже, вам потрібно використовувати однину 'message_thread':

message_thread_path(1)

Що дасть:

http://localhost:3000/message_threads/1

3
Хе. Це трапляється з усіма нами; часто. Можливо, ви не останнє побачите цю помилку!
Скотт

Я отримую цю саму помилку з названим маршрутом, який я створив, і не плюралізую її. Що б там було виправити?
kakubei

1
@kakubei, перевір свій файл маршрутів. Ви телефонуєте resources :my_modelчи resources :my_models? (Вам потрібно зробити множину у файлі маршрутів.)
JellicleCat

Усі мої маршрути плюралізовані.
kakubei

1
Щойно пішов о 5 вечора, збирався битися головою об клавіатуру, це було все. Дякую людино.
Phantomwhale

19

Іноді це також відбувається, коли ви не вказуєте параметр: як у своєму маршруті:

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

Змінено на:

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

.


4
Це спрацювало для мене. Вказівка : як дав мені ім’я, до якого я міг додати "_path", і Rails знав, про біса про що я просив у link_to. Спочатку, коли мій файл маршрутів мав: 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) %> працювати.
ayang

0

У цій ситуації можуть опинитися інші люди, які приземляються тут:

Якщо у вас є окремий ресурс, задекларований у вашому routes.rb:

resource :map

Вам не потрібно передавати об’єкт map_path. Спроба зателефонувати map_path(map)призведе до подібної поведінки (тобто URL-адреси, як map.12).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.