2012-01-16 57 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