Беспокойный Вайс :: WiceGridArgumentError - PullRequest
0 голосов
/ 28 марта 2012

Я работаю над приложением Rails 3.1.1, которое использует WICE_GRID, и застрял на этой ошибке. Я хочу показать сетку ролей на странице пользователя. Я настраиваю данные в контроллере следующим образом. Пользователь и роль связаны 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

Ошибка указывает на строку @ role = init .... . initialize_grid принимает аргумент записи, но это хэш опций, а не коллекция моделей activerecord. Когда я запускаю код в консоли, я вижу, что @ user.roles

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

Для меня это выглядит как коллекция ActiveRecord.

Любая помощь с благодарностью принята!

1 Ответ

0 голосов
/ 29 марта 2012

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...