2013-10-03 76 views
2

在railscast#350(http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast),它建議創建兩個控制器來處理產品:JSON和HTML每個應用程序都使用API​​在Rails應用程序中獲得自己的控制器?

controllers/ 
    api/v1/products_controller.rb 
    products_controller.rb 

我想有API版本的靈活性,但這意味着兩個控制器就會有重複的代碼的行爲。

他們更好的方式來做到這一點,不會導致代碼重複?

+1

如果我因爲這個原因使用兩個控制器(一個公共API,而不是應用程序中使用的控制器),我會將每個控制器的功能委派給助手,裝飾器或演示者類/對象(取決於邏輯的複雜程度在控制器中以及內部發生了什麼)。通常,API與提供視圖的控制器的需求不同,因此您可以將該邏輯放在提供視圖的控制器中,但將任何共享邏輯/功能放入其他類中。對不起,我沒有時間發佈代碼示例,所以我只是留下評論。 – creativereason

回答

0

是的,API和HTML版本可能有不同的視圖要求,並且它不是明智的,但是如果遍及控制器的話,它是不明智的。所以,最好分離它的代碼。

+0

這並不回答這個問題,即「它們是否是一種更好的方法來實現這一點,而不會導致代碼重複?」 – Mischa

+0

實際上,OP問了兩個問題。 @ techvineet回覆了帖子標題中的那個。 – soupdog

相關問題