Как сделать объект видимым в объеме всего контроллера? - PullRequest
0 голосов
/ 09 марта 2011

Так что мне нужно получить экземпляр объекта, который требует параметров.Мне также нужно, чтобы этот объект был доступен в объеме всего контроллера после его создания.Как это может быть сделано?

Редактировать: некоторый код, помогающий проиллюстрировать

def beginLoad(user, category)
  #stuff
  @gaobj = GraphAssistant.new(@arrays.fetch(0), @arrays.fetch(1))
  values = @gaobj.externalize
  ret = {"axis_label" => values.fetch(0), "out" => values.fetch(1), "i" => values.fetch(2)}
end

Но когда я пытаюсь вызвать его снова из этого метода:

def resumeLoad(direction)
  if direction.eql? "left"
    @gaobj.decrementPosition
  elsif direction.eql? "right"
    @gaobj.incrementPosition
  end
  #other stuff
end

, он не работает.Я полагаю, что я мог бы сделать всю эту логику с точки зрения, какое влияние это окажет на производительность?

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Если обе эти функции вызываются из одного и того же действия контроллера, переменная экземпляра (@gaobj) должна быть доступна обоим.Вам нужно будет убедиться, что #beginLoad вызывается раньше #resumeLoad для каждого входящего запроса.Это проблема?

0 голосов
/ 09 марта 2011

Добавьте префикс @sign: @foo = Foo.new.

Обновление: похоже, вам нужно, чтобы это сохранялось в сеансе.

В конце beginLoad добавить:

session[:foo] = @foo

В начале резюме загрузить, добавить:

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