0

现在我正在这样做。这应该是正常的吗?
或者还有其他方法可以以另一种方式做到这一点,哪种方式更受欢迎?

users_controller.rb

before_filter :set_variable

def set_variable
    @number_of_records_to_display = 10  
    @number_of_tags_to_display = 10 
end

def index
...
        @users = User.find_by_username(params[:id]).all_following(order: 'updated_at DESC')
        @users = Kaminari.paginate_array(@users).page(params[:page]).per(@number_of_records_to_display)
        @tags = User.tag_counts_on(:tags, :limit => @number_of_tags_to_display, :order => "id desc")
...
end
4

2 回答 2

2

您所做的是正确且适当的,因为您可能仅用于某些操作而不是全部,因此您可以将 only 子句与 before_filter 一起使用

before_filter your_method,仅:[:show, :index]

但您也可以使用初始化程序,或在环境文件中定义常量。如果您需要代码或更多帮助,请告诉我。

如果使用初始化器,您可以在一个文件中定义常量,比如 constants.rb 并将其放在 config/initializers 文件夹中,在该文件中只有 PAGE_SIZE = 10 TAG_COUNT = 10,

一旦您启动应用程序,此常量将在您的应用程序中随处可用。

于 2013-01-10T10:44:37.727 回答
2

无需定义方法,可以定义为控制器的常量

NUMBER_OF_RECORD_DISPLAY = 10
NUMBER_OF_TAGS_DISPLAY = 10

def index
...
        @users = User.find_by_username(params[:id]).all_following(order: 'updated_at DESC')
        @users = Kaminari.paginate_array(@users).page(params[:page]).per(NUMBER_OF_RECORD_DISPLAY)
        @tags = User.tag_counts_on(:tags, :limit => NUMBER_OF_TAGS_DISPLAY, :order => "id desc")
...
end
于 2013-01-10T10:45:47.623 回答