2009-08-24 5 views
0

Je voudrais appelerActiveScaffold dans un avant filtre

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

avant de rendre une vue d'index de ActiveScaffold, mais si je fais ceci:

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 

-je obtenir:

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 

lors de l'appel de la vue d'index. La même chose se produit si je mets le filtre après l'appel ActiveScaffold. Je serais bien d'adopter une approche différente, mais l'essentiel est que je dois définir un attribut virtuel de chaque objet dans @records basé sur un certain contexte du contrôleur pour l'affichage dans le tableau final

thx

C

Répondre

1

vous ne vraiment pas besoin d'accéder à cette collection dans le contrôleur. Ce que je voulais faire peut être résolu avec les méthodes d'assistance appropriées définies.

0

Je n'ai pas tester cela, mais je pense qu'il devrait être @ foos.collect plutôt que @ records.collect

Questions connexes