Данные виджета на нескольких контроллерах - PullRequest
3 голосов
/ 24 сентября 2008

Допустим, у меня есть виджет, который отображает сводную информацию о том, сколько сообщений или комментариев у меня есть на сайте.

Какой самый простой способ сохранить эту информацию на контроллерах?

Включение переменных экземпляра в контроллер приложения кажется плохой идеей. Наличие фильтра before, загружающего данные для каждого контроллера, пахнет как дублирование кода.

Нужно ли использовать плагин, такой как Cells Plugin (http://cells.rubyforge.org/) или есть более простой способ сделать это?

Ответы [ 3 ]

1 голос
/ 24 сентября 2008

Предположительно, у вас есть один фрагмент, который отображает эту информацию. Вы можете поместить методы, которые выбирают нужные данные, в ApplicationHelper или в качестве методов класса на любую модель (ы), из которой вы получаете данные. Затем вызовите этот метод в частичном, когда вам нужно отобразить его.

0 голосов
/ 24 сентября 2008
def load_sidebar
  @posts = Post.find(:all)
end

Вы упомянули, что отображаете сводную информацию. Если вы действительно не хотите загружать все свои сообщения в память, вы можете сделать следующее.

def load_sidebar
  @post_count = Post.count(:id)
end
0 голосов
/ 24 сентября 2008

Я закончил делать что-то похожее на это:

В контроллерах / application.rb

def load_sidebar
  @posts = Post.find(:all)
end

Чтобы включить боковую панель в различные действия, я сделал это:

before_filter :load_sidebar, :only => [ :index ] #load from application.rb file

Я превратил боковую панель в общую часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...