0

私のアプリには、管理サブフォルダーとコントローラーがあり、メソッドは次のとおりです。

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_idの属性であるためUserGroup

しかし、なぜあなたがメソッドget_group_nameandを作っているのget_user_nameか分かりません。u.group.nameu.user.email

于 2013-01-12T11:36:27.930 に答える