0

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

和模型(不在子目录 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>

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

4

1 回答 1

0

如错误中所述,group_id未定义正确的。你应该这样称呼它:

= u.get_group_name(u.group_id)

因为group_idUserGroup对象的一个​​属性

但是,我不明白您为什么要制作方法get_group_nameand get_user_name,为什么不直接使用u.group.nameand u.user.email

于 2013-01-12T11:36:27.930 回答