activescaffold @records манипулирование в фильтре перед - PullRequest
0 голосов
/ 24 августа 2009

Я хотел бы позвонить

@records.collect{|r| r.set_some_virtual_attribute(@context)}

перед рендерингом представления индекса activescaffold, но если я сделаю это:

controller FooController < ApplicationController
  before_filter :change_things, :only => :index
  active_scaffold :foos

  protected

  def change_things
     @records.collect{|r| r.set_some_virtual_attribute(@context)}
  end
end

Я получаю:

 You have a nil object when you didn't expect it!
 You might have expected an instance of Array. 
 The error occurred while evaluating nil.collect

при вызове представления индекса. То же самое происходит, если я поставлю фильтр после вызова ActiveScaffold. Я был бы неплох, если бы использовал какой-то другой подход, но суть в том, что мне нужно установить виртуальный атрибут каждого объекта в @records на основе некоторого контекста из контроллера для отображения в финальной таблице

1012 * ТНХ *

-C

Ответы [ 2 ]

1 голос
/ 24 ноября 2009

вам на самом деле не нужен доступ к этой коллекции в контроллере. то, что я хотел сделать, можно решить с помощью соответствующих определяемых вспомогательных методов.

0 голосов
/ 25 августа 2009

Я не тестировал это, но я думаю, что это должно быть @ foos.collect, а не @ records.collect

...