Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么铁路歧视我的路线?_Ruby On Rails_Ruby_Routes_Rake - Fatal编程技术网

Ruby on rails 为什么铁路歧视我的路线?

Ruby on rails 为什么铁路歧视我的路线?,ruby-on-rails,ruby,routes,rake,Ruby On Rails,Ruby,Routes,Rake,在my routes.rb文件中只有两行: match 'movies/orderby/:field' => 'movies#orderby' 及 然而,当我在我的项目上运行rake routes时,我得到了一个有趣的输出,看: /movies/orderby/:field(.:format) {:controller=>"movies", :action=>"orderby"} movies GET /movies(.:format

在my routes.rb文件中只有两行:

match 'movies/orderby/:field' => 'movies#orderby'

然而,当我在我的项目上运行
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\u orderby”

…有什么想法吗


编辑:路由工作(即,如果我键入匹配的URL,它将正确路由),但我得到了URL帮助器方法以放入我的视图

定义路由时,除非指定帮助程序的名称,否则方法
match
不会生成url帮助程序。因此,我建议您将其定义如下:

match 'movies/orderby/:field' => 'movies#orderby', :as => :movies_orderby
resources :movies
当您使用
:as
定义路线名称时,如果您想按
标题下单,则可以在视图中这样使用该名称

<%= movies_orderby_path("title") %>


另外,您已经在资源路由之前正确定义了匹配路由。另一种方法可能会导致问题。

如果您更改顺序,它会改变吗?不会。Rake现在在底部列出了我的路线,但同样没有助手或HTTP Verb,这可能值得一提,以便Felipe可以自己帮助自己。一个
:via=>:get
会让他得到路由列表中的动词。@Felipealmeda:对不起,我不能在没有问题的情况下取消提问,或者我可以吗?如果你要使用
:via=>:get
也可以使用
get
而不是
match
<%= movies_orderby_path("title") %>