我正在使用map.resources
和map.resource
設置Rails站點,並遇到了限制(據我所知至少)。路由資源的問題
這是我目前的路由。
map.with_options :conditions => { :subdomain => true } do |sub|
sub.root :controller => 'company'
sub.resource :company do |company|
company.resources :clients, :path_prefix => nil, :name_prefix => nil, :collection => { :sort => :post } do |clients|
clients.resources :projects, :path_prefix => ":client/:project"
end
end
sub.resource :user, :collection => { :logout => :get }
end
在一般意義上,這是我想要的結果:
/客戶名稱/動作
調用客戶端控制器,並通過客戶端名稱作爲某種散列是相同的。
/客戶名稱/項目名稱/操作
調用Projects控制器,但傳遞客戶端名稱作爲散列保持不變。它想通過它作爲一個id。
我希望能保持我的URL結構很基本的,所以:
- 客戶名稱=雅虎
- 項目名稱=登錄頁
/客戶名稱/ - 這應該使用Clients.show
方法。
/client-name/edit - 這應該使用Clients.edit
方法。
/client-name/project-name - 這應該使用Projects.show
方法。
/客戶名稱/項目名稱/編輯 - 這應該使用Projects.edit
方法。
雖然我目前的路由它被解釋成:
/客戶名稱/項目 - 這是使用Projects.index
方法。
/clients/client-name - 這是使用Clients.show
方法。
我真的很感謝任何幫助。
我試圖解開您的問題,但我陷入了困境試圖弄清楚「某種散列是相同的」意味着什麼。 – jdl 2009-03-03 16:44:24
我想要包含可以使用的before_filter方法,所以它需要能夠讀取,params [:client]或params [:project]來拉動它們的slu。。你現在明白了麼?如果你喜歡,我可以向你展示一個例子。 – Garrett 2009-03-03 22:20:03