Маршрутизация / в Rails - PullRequest
3 голосов
/ 16 октября 2010

Я пишу простое приложение на Rails с одним основным контроллером и хочу сопоставить /(:action(:id)) с этим контроллером (в основном удалить префикс контроллера в начале), но все еще есть помощники пути, которые я получаю с помощью map.resources,

Я пытался map.root :controller => 'notes', но получаю ошибку:

неопределенный метод `note_path 'для #

, где я использую функцию link_to_unless_current на мой взгляд.

Редактировать: Вот код в index.html.erb, который выдает ошибку.

1 Ответ

0 голосов
/ 30 апреля 2013

ОБНОВЛЕНИЕ: я не знаю, как я пришел к этому вопросу, но автор только что отметил, что это 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...