我在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"}
当我尝试重定向到控制器操作中的命名路由时,会出现问题。这是Paper资源的create
操作的摘录。它应该在成功保存时将用户重定向到show
控制器的paper
操作。
if @paper.save
redirect_to @paper
else
render :action => 'new'
end
出现的异常是:undefined method 'paper_url'
,表明控制器无法看到指定的路由。但是,这些辅助方法将在视图中工作。
据我所知,这与Rails脚手架设置资源的方式相同,所以我找不到什么是错的。我在这里缺少什么?
答案 0 :(得分:2)
应该是map.resource s :论文
我只能得到错误,我复制了我的路线,所以我认为它必须是一个错字。
答案 1 :(得分:1)
你犯了一个错误
纸模型的脚手架将如下所示:
papers GET /papers(.:format) {:controller=>"papers", :action=>"index"}
POST /papers(.:format) {:controller=>"papers", :action=>"create"}
new_paper GET /papers/new(.:format) {:controller=>"papers", :action=>"new"}
edit_paper GET /papers/:id/edit(.:format) {:controller=>"papers", :action=>"edit"}
paper GET /papers/:id(.:format) {:controller=>"papers", :action=>"show"}
PUT /papers/:id(.:format) {:controller=>"papers", :action=>"update"}
DELETE /papers/:id(.:format) {:controller=>"papers", :action=>"destroy"}
特别关注show方法:
paper GET /papers/:id(.:format)
而不是你的:
papers GET /papers(.:format)