我有一个项目控制器/模型。我没有在#index页面上列出项目,而是显示了一个下拉列表,它提交给项目#select,它找到了正确的项目(我确保每个选项组合只能有1个)并转发用户到该项目的#show页面。
所以对于我的路线,我这样做......
resources :projects, :only => [:index, :show] do
collection do
get 'select'
end
end
那很好,但#select的帮助方法是'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'
这看起来可能有用,但它并不是因为/ project / select实际匹配'project#show'的路由。改变线的顺序就可以了。
match '/projects/select', :to => 'projects#select', :as => 'select_project'
resources :projects, :only => [:index, :show]
但是有更优雅的方式处理这个吗?我意识到这是边界OCD,但我希望能够完全控制资源块中的路径名称。
答案 0 :(得分:2)
使用资源而不是资源
答案 1 :(得分:1)
您可能不希望将其作为收集路线而是成员路线:
resources :projects, :only => [:index, :show] do
member do
get 'select'
end
end
这样你就可以得到select_project助手。
答案 2 :(得分:0)
对于那些想要重命名辅助方法方面的人(如标题所示):
resources :posts, as: "articles"