Я настроил ресурс в routes.rb
:
map.resource :papers
, что отражается на выходе rake routes
:
new_papers GET /papers/new(.:format) {:controller=>"papers", :action=>"new"}
edit_papers GET /papers/edit(.:format) {:controller=>"papers", :action=>"edit"}
papers GET /papers(.:format) {:controller=>"papers", :action=>"show"}
PUT /papers(.:format) {:controller=>"papers", :action=>"update"}
DELETE /papers(.:format) {:controller=>"papers", :action=>"destroy"}
POST /papers(.:format) {:controller=>"papers", :action=>"create"}
Проблема возникает, когда я пытаюсь перенаправить на именованный маршрут внутри действия контроллера. Это отрывок из действия create
для ресурса «Бумага». При успешном сохранении он должен перенаправить пользователя на действие show
контроллера paper
.
if @paper.save
redirect_to @paper
else
render :action => 'new'
end
Возникает исключение: undefined method 'paper_url'
, предполагающее, что контроллер не может видеть названный маршрут. Однако эти вспомогательные методы будут работать в представлениях.
Насколько я могу судить, это то же самое, что скаффолд Rails устанавливает ресурс, поэтому я не могу найти, что не так. Что мне здесь не хватает?