簡體   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