In my app, i have admin subfolder, and controller there, and method:
class Admin::UserGroupsController < ApplicationController
def index
@pre_usergroups = UserGroup.all
@user_groups = Kaminari.paginate_array(@pre_usergroups).page(params[:page]).per(50)
render :layout => 'admin'
end
end
route:
namespace :admin do
resources :user_groups
end
and model (not in subdirectory admin):
class UserGroup < ActiveRecord::Base
attr_accessible :group_id, :user_id
belongs_to :group
belongs_to :user
validates :user_id, :presence => {:message => I18n.t(:user_not_chosen)}
validates :group_id, :presence => {:message => I18n.t(:group_not_chosen)}
def get_group_name(id)
@gr = Group.find(id)
@gr.name
end
def get_user_name(id)
@user = User.find(id)
@user.email
end
end
Also i didn’t see validation message’s and it’s working…. it skip validation:
and view:
%table.table.table-striped
%tr
%th
Название группы:
%th
Пользователь:
-@user_groups.each do |u|
%tr
%td
= u.get_group_name(group_id)
%td
= u.user_id
But why i get
undefined local variable or method `group_id' for #<#<Class:0xb352734>:0xab437dc>
So i didn’t go to method in model…
How can i access model method?
as stated in the error
group_idis not defined which is true.You should be calling it as follows:
= u.get_group_name(u.group_id)because
group_idis an attribute of theUserGroupobjectHowever, I don’t see why you are making the methods
get_group_nameandget_user_name, why don’t you just useu.group.nameandu.user.email?