рефакторинг атрибутов will_paginate в запросе контроллера - PullRequest
0 голосов
/ 27 февраля 2011

Эй. Я использую следующую строку снова и снова в моих запросах индекса контроллера. Имеет ли смысл создавать новый метод приложения для его повторного использования? Любые предложения о том, как я мог бы извлечь это и, возможно, передать атрибут :per_page переменный параметр?

paginate :page => params[:page], :per_page => 12

Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Вы можете сделать это в контроллере приложения.Я думаю, так как это однострочный текст, вы экономите очень мало с точки зрения нажатия клавиш и текста.Тем не менее, если вы хотите это сделать, вы можете поместить что-то подобное в файл application_controller.rb

# optional-- this lets you use the method in views as well
helper_method :paginate_helper

...
# optional, but safer
protected

def paginate_helper(obj_to_paginate, page_limit)
  obj_to_paginate.paginate :page => params[:page], :per_page => page_limit
end

, в зависимости от области, в которой вы будете использовать этот помощник, вы можете добавить оператор ifотносительно параметров [: page].paginate будет работать с: page => nil, однако вы можете получить ошибку для params [], если params не существует (т.е. вы будете делать nil[], пытаясь обработать nil как массив).

1 голос
/ 27 февраля 2011

Как сказано в волеизъявлении_ЧИТАНИЯ ...

Вы можете определить это так:

class Post < ActiveRecord::Base
  cattr_reader :per_page
  @@per_page = 50
end

... или как это:

class Post < ActiveRecord::Base
  def self.per_page
    50
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...