ОБНОВЛЕНИЕ: я не знаю, как я пришел к этому вопросу, но автор только что отметил, что это 3 года, которые я полностью пропустил.Я оставлю этот ответ, если кому-то нужно такое поведение в рельсах 3. В рельсах 2 оно недопустимо ...
Маршрут root
не будет работать со всем контроллером, так как это должно указывать на конкретное действие.
Первый параметр resources
будет использоваться для определения пути (обычно это будет /notes
) и в то же время для создания помощников, таких как notes_path
.Что вы хотите сделать, это установить '/'
, но также добавить опцию :as
, чтобы дать правильные имена помощников.Наконец, это должно выглядеть так:
resources '/', controller: :notes, as: :notes
Также очень важно отметить, что если вы хотите использовать какие-либо другие ресурсы, вы должны поместить их выше notes
route.В противном случае rails будет распознавать имя ресурса как id
шоу действий заметок.
Пример:
resources '/', controller: :notes, as: :notes
resources :comments
При переходе к /comments
будет пытаться найти заметку с идентификатором 'comments'.
resources :comments
resources '/', controller: :notes, as: :notes
Открытие /comments
перейдет к comments_controller#index
.