我有一個關於在控制器動作中重複使用代碼的問題。我認爲這是一個相當標準的情況,所以我對Rails中的最佳實踐感興趣。如何在Rails中重用嵌套控制器中的渲染操作?
比方說,我有一個films
資源與對應的FilmsController
,其中有嵌套資源comments
服務CommentsController
。嵌套資源可以使用其index
和show
操作自行呈現。但是,也應該可以將註釋嵌入到相應的電影頁面中。
現在,問題是,在FilmsController.show
內重複使用CommentsController
的代碼的最佳方法是什麼?
1)強制CommentsController.index
呈現爲一個字符串,然後將其傳遞給一個變量到電影視圖?
或2)直接在電影視圖中調用CommentsController.index
作爲一種「部分」,從那裏執行數據庫查詢?
或者3)在CommentsController
中創建一個單獨的方法負責數據庫的處理,從CommentsController.index
和FilmsController.show
都調用它,並在這兩個地方使用相應的視圖呢?
對我來說,選項1)和2)似乎有點混亂,而3)不是模塊化的,並且涉及一些代碼重複。有沒有更好的方法來完成這個?
非常感謝!
查找演示模式在Ruby on Rails的 –
@TonyHopkinson - 感謝您的想法,演示模式可能確實是有用的在某些情況下,當通過數據更復雜。總而言之,它看起來像我正在與我的選項3),而儘可能封裝的東西。 –
簡單的數據有一個壞習慣,即不簡單,快速,但歡迎您。 –