2012-01-16 56 views
1

我在我的控制器這樣定義的每個動作(在routes.rb)的:匹配集合中的路線

resources :home do 
    collection do 
     get "home/index" 
     get "home/about_me" 
     get "home/contact" 
    end 
    end 

如果我會用比賽爲行動about_me,我不得不使用

 resources :home do 
     collection do 
      get "home/index" 
      get "home/about_me" 
      get "home/contact" 
     end 
     end 

     match 'about-me' => 'home#about_me' 

存在任何方式,如何將match規則直接添加到集合中?我的意思是這樣的:

resources :home do 
    collection do 
     get "home/index" 
     get "home/about_me", match => "about-me" 
     get "home/contact" 
    end 
    end 

而且我有一個問題還沒有 - 當我在routes.rb使用的代碼的第二部分,所以當我設置的URL地址about-me,因此地址工作正常,但是當我類型有home/about_me,所以我得到的錯誤

未知的動作:動作「秀」不能爲HomeController的找到。

是什麼引起了這個錯誤?

+0

在Rails的URL中使用連字符有點雜亂;我建議只接受默認的下劃線來完全避開這個問題。 – coreyward 2012-01-27 16:44:10

+0

我忘了回答你的其他問題。我現在更新了我的答案,查看它! – Ashitaka 2012-01-27 16:46:18

回答

3

我認爲這裏的問題是,當你的路由嵌套在resources :home的內部時,你的路由有home/前綴。試試這個:

resources :home do 
    collection do 
    get :index 
    get :about_me 
    get :contact 
    end 
end 

此外,當你有麻煩的設置在控制檯的路線,類型rake routes。這將生成您的應用程序的路線以及相應的路徑和控制器。

編輯:這是你的其他問題的答案。

resources :home do 
    collection do 
    get 'about_me' => 'about-me' 
    end 
end