在我的应用程序中,我有admin子文件夹和控制器,以及方法:
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
路线:
namespace :admin do
resources :user_groups
end
和model(不在子目录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
此外,我没有看到验证消息,它正在工作......它跳过验证:
并查看:
%table.table.table-striped
%tr
%th
Название группы:
%th
Пользователь:
-@user_groups.each do |u|
%tr
%td
= u.get_group_name(group_id)
%td
= u.user_id
但为什么我会
undefined local variable or method `group_id' for #<#<Class:0xb352734>:0xab437dc>
所以我没有去模型中的方法...... 我如何访问模型方法?
答案 0 :(得分:0)
group_id
中所述的未定义为真。 你应该按如下方式调用它:
= u.get_group_name(u.group_id)
因为group_id
是UserGroup
对象的属性
但是,我不明白为什么要制作方法get_group_name
和get_user_name
,为什么不使用u.group.name
和u.user.email
?