2012-02-22 79 views
0

在我的网站中,用户可以从任何页面创建新帖子。但我不确定把Rails实例变量位置

@var = Model.new 

虽然,因为它不对应于特定的控制器。这种情况的最佳做法是什么?我想在应用程序控制器中创建它吗?我想我不应该在视图本身中初始化它。

+0

我个人不会介意在视图中实例化它,而不是污染每一个控制器和每个视图与一个毫无意义的伊娃。 – 2012-02-22 23:48:55

回答

2

是的,你会在你的ApplicationController中创建一个before_filter,根据需要它会初始化@var

class ApplicationController < ActionController::Base 
    before_filter :initialize_common_components 

    # ... 

    private 
    def initialize_common_components 
     @var = Model.new 
    end 
end 
+0

好的,谢谢!一旦过了11分钟,我会标记为答案。 – Ian 2012-02-22 23:47:07

+0

添加了一些代码,我怎么做*(使用私有方法)* – deefour 2012-02-22 23:47:54

+0

您也可以跳过它的某些特定的控制器。通过skip_before_filter:该特定控制器上的initialize_common_components。 – Jak 2012-02-23 11:24:37