2013-08-06 28 views
0

我在config/routes.rb文件中的以下路線:獲得包含通過PARAMS資源的ID爲自定義操作

resources :employees do 
    get 'dashboard' 
    get 'orientation' 
end 

employees指的是普通的資源處理標準的REST風格的動作。 dashboardorientation是我目前所稱的「自定義操作」,它對Employee實例起作用。如果我有我的術語混淆,並且dashboardorientation真的是別的,我很抱歉。這些自定義操作,以響應網址如下:

http://myhost/employees/1/dashboard 

即他們是「成員」的行爲很像0​​,edit

無論如何,這一切工作不夠好。上EmployeesController定期的動作,例如通過show獲得params[:id]相關Employee的ID。但是,對於這種當前結構,dashboardorientation必須改爲使用params[:employee_id]。這不是太難處理,但會導致一些額外的代碼複雜性,因爲我的常規before_filter(預計params[:id]不適用於這兩個操作)。

如何讓路由系統以與show等相同的方式爲這些自定義操作的ID填充params[:id]?我已經嘗試了各種方法member而不是get這些行動,但沒有任何工作,我想要的方式呢。這個應用程序是使用Ruby on Rails 3.2構建的。

回答

2

這可以幫助你:

resources :employees do 
    member do 
    get 'dashboard' 
    get 'orientation' 
    end 
end 

和上面會產生類似下面的路線,然後你就可以使用PARAMS [:ID ]在您的EmployeesController中。

dashboard_employee GET /employees/:id/dashboard(.:format)   employees#dashboard 
orientation_employee GET /employees/:id/orientation(.:format)  employees#orientation 
+0

謝謝,Kuldeep。今晚我會試試這個,並且讓它知道它是否有效。 –

+0

沒問題理查德。 :) – Kuldeep

+0

另外一個評論:我的做法有優勢所產生的路徑方法'employee_dashboard_path'和'employee_orientation_path'遵循標準的英語語序(名詞修飾後面名詞),而你的名詞後面名詞修飾。我想這是因爲我違反了Rails慣例,即動作應該是動詞。你知道有什麼方法可以指定助手方法名嗎? –

0

我沒有測試過這種例子,但可以明確設置足智多謀的路徑。

像這樣的東西可能會奏效:

resources :employees, path: '/employees/:id' do 
    get 'dashboard', path: '/dashboard' 
    get 'orientation', path: '/orientation' 
end 
相關問題