2012-08-11 57 views
1

我的購物網站有一個在所有頁面上都是通用的標題。 我在標題中添加了購物車圖標,其中的數字根據當前購物車中的內容進行更新。何時將方法添加到application_controller.rb

因爲這個圖標需要current_cart的定義,所以我現在需要將它添加到每個控制器動作中。這是不明智的還是不安全的?我是新來的rails,並不太瞭解添加方法到applications.rb

的安全影響此外,最好的方法來做到這一點,將這一次添加到application_controller.rb,或單獨添加它向每個相關控制者採取行動

在此先感謝您的反饋!

回答

1

考慮到DRY,一定要添加一次這個方法,在你的控制器繼承樹中增加一級。如果所有的控制器都需要這個方法,那麼application_controller.rb是個好地方。如果只是其中的一些,那麼你可以考慮創建從ApplicationController繼承的控制器,將該方法存儲在其中,並且該方法應該繼承的所有控制器應該繼承它。

+0

我看到這是有道理的。沒想到第二個選項。謝謝! – umezo 2012-08-11 18:56:38

0

所有控制器都從應用程序控制器繼承。這意味着您在應用程序控制器中定義的任何方法在所有其他控制器中都可用。

+0

謝謝,我要問的是,是否有任何原因(性能,安全性或其他)在多個控制器中定義而不是在application_controller中只定義一次。我認爲這些答案意味着關鍵的區別是DRYness? – umezo 2012-08-11 18:59:51