У меня есть модель Wizard
, на которую клиент ссылается без идентификатора (он сохраняется в сеансе), поэтому я создал отдельный ресурс для: show и: update.Я хочу, чтобы администратор имел доступ ко всем экземплярам этой модели через индекс, чтобы администратор мог удалять отклонения, поэтому я добавил множество ресурсов для: index и: destroy.Индекс и уничтожение работают, но я не могу найти правильные аргументы для передачи в form_for в представлении обновлений.
Настройка
# config/routes.rb
WTest::Application.routes.draw.do
resource :wizard, :only => [:show, :update]
resources :wizards, :only => [:index, :destroy]
...
end
, что приводит к
$ rake routes
wizards GET /wizards(.:format) {:action=>"index", :controller=>"wizards"}
wizard DELETE /wizards/:id(.:format) {:action=>"destroy", :controller=>"wizards"}
GET /wizard(.:format) {:action=>"show", :controller=>"wizards"}
PUT /wizard(.:format) {:action=>"update", :controller=>"wizards"}
Это устанавливает маршруты так, как я ожидал.
Вопрос (исправленный с оригинального поста)
В консоли:
>> app.wizard_path
выдает ошибку ActionController::RoutingError: No route matches {:action=>"destroy", :controller=>"wizards"}
Почему это так?Я неправильно настроил свои маршруты?Мне нужно указать :url => wizard_path
для form_for () в представлении обновлений мастеров.
Подробности
Если я укажу явный путь в моем вызове form_for:
# app/view/wizards/update.html.erb
<%= form_for @wizard, :url => wizard_path do |f| %>
<%= f.submit %>
<% end %>
... затем попытка сделать это для for приводит к ошибке в строке form_for:
No route matches {:action=>"destroy", :controller=>"wizards"}
Я понятия не имею, почему он пытается сопоставить действие уничтожения.Как получить форму для отправки по маршруту {action=>"update", :controller=>"wizards"}
?
(Кстати, я посмотрел на ошибка 267 , и я не думаю, что это то же самое, чтоЯ наблюдаю. Но если это эта ошибка, есть ли обходной путь?)