2012-08-11 55 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