2009-08-23 4 views
2

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

/groups/1234/poll_memos

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

Unknown action

No action responded to 1234. Actions: create, destroy, edit, index, new, poll_memos, show, and update

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

ответ

1

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

Посмотрите на это question и на этот one.

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

1

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

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

1

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

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

Ваш URL

/groups/1234/poll_memos 

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

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

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

map.resources :groups, :member => {:poll_memos => :get} 
Смежные вопросы