我正在使用WICE_GRID的Rails 3.1.1应用程序,我遇到了这个错误。 我想在用户显示页面上显示角色网格。我正在这样设置控制器中的数据。 用户和角色由has_many通过user_role相关联。
def show
@user = User.find(params[:id])
@roles = initialize_grid(@user.roles)
end
当我运行网站时,我收到此错误
Wice::WiceGridArgumentError in UsersController#show
WiceGrid: ActiveRecord model class (second argument) must be a Class derived from ActiveRecord::Base
错误指向 @roles = init .... 行。 initialize_grid确实记录了一个记录,但这是一个选项的哈希,而不是一个activerecord模型集合。 当我在控制台中运行代码时,我看到@ user.roles是
[#<Role id: 1, title: "Role1>, #<Role id: 2, title: "Role2">]
对我来说看起来像是一个ActiveRecord系列。
感激地接受了任何帮助!
答案 0 :(得分:0)
initialize_grid需要一个类。你传递了一系列对象。您似乎想要在网格中显示用户的角色。你想要这样的东西:
def show
@user = User.find(params[:id])
@roles = initialize_grid(Role, :conditions => ['user_id = ?', @user.id])
end
但是,我猜你的角色表中没有user_id。您可能有一个名为user_roles的映射表。在这种情况下,您将需要重构上面的代码。尝试运行此代码,以确保您可以在网格中查看角色(无范围)。
def show
@user = User.find(params[:id])
@roles = initialize_grid(Role)
end