2012-03-28 4 views
0

Ich arbeite an einer Rails 3.1.1 App, die WICE_GRID verwendet, und ich bin auf diesem Fehler stecken. Ich möchte ein Raster von Rollen auf der Benutzershow-Seite zeigen. Ich richte die Daten im Controller so ein. Benutzer und Rolle sind durch has_many durch user_role verwandt.Troublesome Wice :: WiceGridArgumentError

def show 
    @user = User.find(params[:id]) 
    @roles = initialize_grid(@user.roles) 
end 

Wenn ich die Seite laufen bekomme ich diesen Fehler

Wice::WiceGridArgumentError in UsersController#show 
WiceGrid: ActiveRecord model class (second argument) must be a Class derived from ActiveRecord::Base 

Der Fehler zeigt auf @roles = init .... Linie. initialize_grid nimmt zwar ein Argument, aber das ist ein Hash von Optionen, keine ActiveRecord-Model-Collection. Wenn ich den Code in der Konsole ausführen, ich sehe, dass @ user.roles

ist
[#<Role id: 1, title: "Role1>, #<Role id: 2, title: "Role2">] 

wie eine Active Sammlung Sieht mir.

Jede Hilfe dankbar angenommen!

Antwort

0

initialize_grid nimmt eine Klasse. Sie übergeben eine Reihe von Objekten. Es scheint, dass Sie die Rollen eines Benutzers im Raster anzeigen möchten. Sie möchten etwas wie dieses:

def show 
    @user = User.find(params[:id]) 
    @roles = initialize_grid(Role, :conditions => ['user_id = ?', @user.id]) 
end 

Allerdings rate ich Ihre Rollen Tabelle hat keine user_id drin. Sie haben wahrscheinlich eine Zuordnungstabelle namens user_roles. In diesem Fall sollten Sie den obigen Code umgestalten. Versuchen Sie, nur diesen Code auszuführen, um sicherzustellen, dass Sie die Rollen in einem Raster (nicht verkopt) anzeigen können.

def show 
    @user = User.find(params[:id]) 
    @roles = initialize_grid(Role) 
end 
+0

Ich glaube, ich missverstanden, wie initialize_grid() funktioniert. Danke für Ihre Hilfe! – John