2010-11-19 133 views
3

我有一个项目控制器/模型。我没有在#index页面上列出项目,而是显示了一个下拉列表,它提交给项目#select,它找到正确的项目(我确定每个选项组合只能有1个),并转发用户加入该项目的#show页面。在Rails 3路径中重命名路径助手

所以我的路我做到这一点...

resources :projects, :only => [:index, :show] do 
    collection do 
    get 'select' 
    end 
end 

而且多数民众赞成罚款,但对于#选择辅助方法是“select_projects”,这是可以理解的,但在我的情况我真的想“select_project” 。而我真的不想在别的文件中加入别名。没问题我可以用:as ...

resources :projects, :only => [:index, :show] do 
    collection do 
    get 'select', :as => 'select_project' 
    end 
end 

但是现在我的帮手是'select_project_projects'。所以,我骗了一点(而不是在其他文件中走样仍然好)......

resources :projects, :only => [:index, :show] 
match '/projects/select', :to => 'projects#select', :as => 'select_project' 

这看起来似乎是工作,但它并没有因为/项目/实际选择匹配的路由为“项目#秀”。改变线条的顺序是有用的。

match '/projects/select', :to => 'projects#select', :as => 'select_project' 
resources :projects, :only => [:index, :show] 

但是,有没有更好的处理方式?我意识到这是边界强迫症,但我希望能够完全控制资源块内的路由名称。

回答

1

你可能不希望把它收集的路线,但一员路线:

resources :projects, :only => [:index, :show] do 
    member do 
    get 'select' 
    end 
end 

这种方式,您将有select_project帮手。

+0

没有一个成员的路由在URL需要一个ID ?它应该路由到/ projects/select not/projects/1/select – LeroyJ 2010-11-23 02:07:15

2

使用资源,而不是资源

0

对于那些要重命名的东西辅助方法侧(如标题所暗示的):

resources :posts, as: "articles"