繁体   English   中英

在Rails 3路由中重命名路径助手

[英]Renaming path helpers in Rails 3 routing

我有一个项目控制器/模型。 我没有在#index页面上列出项目,而是显示了一个下拉列表,它提交了项目#select,它找到了正确的项目(我确保每个选项组合只能有1个)并转发用户到该项目的#show页面。

所以对于我的路线,我这样做......

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

这很好,但#select的辅助方法是'select_projects',这是可以理解的,但在我的情况下我真的想要'select_project'。 而且我真的不想在另一个文件中将其别名。 我可以使用没问题:如......

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'

这看起来可能有效,但它并不是因为/ project / select实际匹配'project#show'的路由。 改变线的顺序就可以了。

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

但有更优雅的方式处理这个? 我意识到这是临界OCD,但我希望能够完全控制资源块中的路由名称。

使用资源而不是资源

你可能不想把它作为收集路线而是成员路线:

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

这样你就可以得到select_project助手。

对于那些想要重命名辅助方法方面的人(如标题所示):

resources :posts, as: "articles"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM