现在我就是这样做的。这应该是正常的吗? 或者还有其他方法可以用另一种方式做到这一点,这是更受欢迎的方式吗?
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
答案 0 :(得分:2)
你正在做的是正确和恰当的,因为你可能只使用某些动作而不是所有动作,所以你只能使用带有before_filter的子句
before_filter your_method,仅限:[:show,:index]
但您也可以使用初始化程序,或在环境文件中定义常量。如果您需要代码或更多帮助,请告诉我。
如果使用初始化程序,您可以在一个文件中定义常量,例如constants.rb并将其放在config / initializers文件夹中,该文件中只有 PAGE_SIZE = 10 TAG_COUNT = 10,
一旦你启动应用程序,这个常量将在你的应用程序的任何地方都可用。
答案 1 :(得分: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