2012-03-12 40 views
0

在我的routes.rb文件中有隻是兩行:爲什麼Rails會歧視我的路線?

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」爲

...任何想法????

編輯:路線工作(即,如果我鍵入一個URL匹配,它得到正確的路由),但我得到沒有 URL helper方法把我的意見!

+0

如果您更改訂單,它會改變嗎? – DGM 2012-03-12 03:33:28

+0

沒有。 Rake現在在底部列出了我的路線,但是又沒有幫手或HTTP動詞 – 2012-03-12 03:34:44

回答

2

定義路由時,方法match不會生成url助手,除非您指定助手的名稱應該是什麼。因此,我建議你把它定義如下:

match 'movies/orderby/:field' => 'movies#orderby', :as => :movies_orderby 
resources :movies 

當你定義一個:as路線的名字,那麼你就可以用它在你的看法是這樣,如果你如想通過訂購title

<%= movies_orderby_path("title") %> 

而作爲一個側面說明,你已經正確定義的資源路徑賽前路線。反過來可能會導致問題。

+0

[路由指南](http://guides.rubyonrails.org/routing.html)可能值得一提,以便Felipe能夠幫助自己。並且':via =>:get'會在路由列表中爲他提供動詞。 – 2012-03-12 03:45:21

+1

Mu !!!!僧人說。 謝謝!菲利普說。 – 2012-03-12 03:47:19

+0

@FelipeAlmeida:對不起,我不能在沒有問題的情況下回答一個問題,或者我可以嗎? – 2012-03-12 04:15:42

相關問題