Rails从admin部分的另一个表中获取字段

时间:2013-01-12 11:27:35

标签: ruby-on-rails ruby model

在我的应用程序中,我有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>

所以我没有去模型中的方法...... 我如何访问模型方法?

1 个答案:

答案 0 :(得分:0)

错误group_id中所述的

未定义为真。 你应该按如下方式调用它:

= u.get_group_name(u.group_id)

因为group_idUserGroup对象的属性

但是,我不明白为什么要制作方法get_group_nameget_user_name,为什么不使用u.group.nameu.user.email