Я бы сделал две вещи, чтобы реорганизовать это ...
Во-первых, необходимо уменьшить сцепление, перенеся параметры разбивки на страницы в метод класса в проектной модели. Ваш контроллер не должен знать так много о проектной модели.
class Design < ActiveRecord::Base
def self.paginate_with_params(params, per_page)
paginate(:page => params[:page], :order => 'name', :per_page => per_page)
end
end
Во-вторых, удалите ненужные переменные и логику из вашего контроллера, которые на самом деле не увеличивают ценность:
@category = Category.find(params[:id])
@designs = @category.sub_categories.map |sub_cat|
sub_cat.designs.paginate_with_params(params, @per_page)
end
Я не проверял этот код, поэтому, пожалуйста, будьте осторожны, если он не работает :)