麻烦的Wice :: WiceGridArgumentError

时间:2012-03-28 15:59:17

标签: ruby-on-rails-3.1

我正在使用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系列。

感激地接受了任何帮助!

1 个答案:

答案 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