проблема маршрутизации рельсов - PullRequest
2 голосов
/ 24 августа 2009

У меня есть несколько контроллеров RESTful и я добавил собственный метод к application_controller. Я не изменил ничего в маршрутах, чтобы указать этот новый метод. Метод poll_memos. Я ввел следующий URL:

/ групп / 1234 / poll_memos

Я получаю следующую ошибку:

Неизвестное действие

1234 не ответил ни на одно действие. Действия: создавать, уничтожать, редактировать, индексировать, создавать новые, poll_memos, показывать и обновлять

Два вопроса: Поскольку я не изменял маршруты, как рельсы узнали о poll_memos? Во-вторых, поскольку он, кажется, знает об этом, почему он не работает?

Ответы [ 3 ]

1 голос
/ 24 августа 2009

Правильный URL-адрес - / groups / poll_memos / 1234. В вашем примере rails думает, что вы пытаетесь вызвать метод контроллера с именем "1234", который, конечно, отсутствует.

Rails знает о poll_memos, потому что код, который печатает сообщение об ошибке, смотрит на код контроллера, а не на маршрутизацию. Вы можете настроить маршруты таким образом, что он скажет, что существует метод poll_memos, но вы не можете получить к нему доступ через URL.

1 голос
/ 24 августа 2009

Это потому, что вы, скорее всего, запускаете маршрут по умолчанию:

map.connect ':controller/:action/:id'

Ваш URL

/groups/1234/poll_memos

будет отображаться следующим образом:

{:controller => "groups", :action => "1234", :id => "poll_memos"}

Кроме того, поскольку вы используете спокойный стиль, вам необходимо настроить маршрут. Чтобы записки опроса работали с элементами в коллекции, вам нужно изменить маршруты, чтобы они отображались следующим образом:

map.resources :groups, :member => {:poll_memos => :get}
1 голос
/ 24 августа 2009

Я не думаю, что это спокойный маршрут, который автоматически генерирует рельсы. Это означает, что вам нужно добавить его самостоятельно.

Посмотрите на этот вопрос и на этот один .

И это в действиях, потому что это в контроллере, сообщение об ошибке просто печатает все действия.

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