我正在編寫這個小部件,它將包含在網站的單個頁面中,所以我沒有看到在ApplicationController中聲明我正在執行的操作的理由。但是,這個新的窗口小部件確實有相當大的複雜性,所以我想讓它與通常處理這個頁面的控制器分開,因爲控制器已經具有相當複雜的一點。我最初想到了我的設計,我可以爲控制器製作一個輔助模塊,並保留大部分的部件邏輯。如何使用Rails在控制器助手中保存實例變量DRY?
我想寫這個幫手模塊,但後來我意識到有一個特定的數組我需要能夠從一個位置初始化,但多個方法需要訪問它,它需要被保險,它在任何其他方法調用此數組之前被初始化。有沒有辦法在這樣一個模塊中做類似於before_filter的事情,我可以確保在使用之前初始化這個變量,還是有更好的方法來處理這種「Rails方式」?
你的意思是在與控制器相同的文件中定義一個類,或者在其他地方定義它,然後讓控制器在過濾器之前做一個初始化它?如果沒有在控制器文件中定義(這是我在使用「Rails方式」的地方),那麼應該在rails根目錄中定義它的位置? –
如果你只需要它在控制器中,我會在控制器文件中定義它,如果你將在別的地方重複使用它,我會把它放在'lib'或'app/models'目錄中。 「模型」文件夾中有一種常見方法,即「只將模型鏈接到數據庫中的表格」,但對於我來說,這不是「正確」的行爲,如果您可以添加一個「第一公民「的域名對象,它應該生活在模型中。 –
所以關於這個站點的怪異部分是模型是從服務調用中即時生成的,所以根本沒有任何ActiveRecord的使用。我之所以想把控制邏輯與控制器分離,是因爲它遠離那個頁面上的唯一控件,而且控制器中的邏輯變得相當......好......需要重構,而我想知道我該如何解決這個問題。 –