在我的routes.rb文件中只有两行:
match 'movies/orderby/:field' => 'movies#orderby'
和
resources :movies
然而,当我在我的项目上运行rake routes
时,我得到一个有趣的输出,看看:
/movies/orderby/:field(.:format) {:controller=>"movies", :action=>"orderby"}
movies GET /movies(.:format) {:action=>"index", :controller=>"movies"}
POST /movies(.:format) {:action=>"create",:controller=>"movies"}
new_movie GET /movies/new(.:format) {:action=>"new", :controller=>"movies"}
edit_movie GET /movies/:id/edit(.:format) {:action=>"edit", :controller=>"movies"}
movie GET /movies/:id(.:format) {:action=>"show", :controller=>"movies"}
PUT /movies/:id(.:format) {:action=>"update",:controller=>"movies"}
DELETE /movies/:id(.:format) {:action=>"destroy", :controller=>"movies"}
您看到我手工编码的路线与其他路线有何不同? (它是顶部的那个)另外,Rails 还没有为我创建了一个url帮助器....
我一直收到以下错误消息:
未定义方法`movies_orderby'
......任何想法????
编辑路线有效(即如果我输入匹配的网址,它会正确路由)但我有没有网址帮助方法提出我的意见!!
答案 0 :(得分:2)
定义路由时,方法match
不会生成url助手,除非您指定助手的名称应该是什么。所以我建议您将其定义如下:
match 'movies/orderby/:field' => 'movies#orderby', :as => :movies_orderby
resources :movies
当您使用:as
定义路线名称时,如果您希望按title
<%= movies_orderby_path("title") %>
作为旁注,您已在资源路线之前正确定义了匹配路线。反过来可能会导致问题。