Ruby on rails 未定义的方法`电子邮件';零级:零级

Ruby on rails 未定义的方法`电子邮件';零级:零级,ruby-on-rails,Ruby On Rails,在我的一个观点中,我对以下代码有疑问: <% if !@admin.emails.nil? %> <% @admin.emails.each do |email| %> <tr> <td><%= email.email %></td> </tr> <% end %> <% end %> 这会产生一个错误: undefined method `emails' for n

在我的一个观点中,我对以下代码有疑问:

<% if !@admin.emails.nil? %>
<% @admin.emails.each do |email| %>
  <tr>
    <td><%= email.email %></td>
  </tr>
<% end %>
<% end %>

这会产生一个错误:

undefined method `emails' for nil:NilClass
Extracted source (around line #1):
1: <% @admin.emails.each do |email| %>
2:   <tr>
3:     <td><%= email.email %></td>
4:   </tr>
nil:NilClass的未定义方法“emails” 提取的源(第1行附近): 1: 2: 三: 4: 管理员控制器:

class AdminController < ApplicationController
end
def index
      @emails = Email.all
      respond_to do |format|
       format.html # index.html.erb
       format.xml  { render :xml => @emails }
     end
end
class AdminController@emails}
结束
结束
电子邮件模式:

class Email < ActiveRecord::Base
  attr_accessible :email
  belongs_to :admin
  email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates :email, :presence   => true,
                    :length     => { :maximum => 250 },
                    :format     => { :with => email_regex },
                    :uniqueness => { :case_sensitive => false }

end
class电子邮件true,
:length=>{:max=>250},
:format=>{:with=>email_regex},
:唯一性=>{:区分大小写=>false}
结束
管理模式:

class Admin < ActiveRecord::Base
  has_many :emails
end
class Admin

知道有什么问题吗?

您的索引方法不在AdminController中…:)


它定义的是
@email
,而不是
@admin

你在哪里定义
@admin
?我不是。我试图在管理员视图中显示电子邮件列表。管理员目前只是一个静态页面。我应该如何定义?你正在定义
@emails
,为什么不使用它来代替
@admin.emails
?是的,再加上蔡斯的评论,这很有效,thanks@maxm:我合并了我的评论,所以你可以接受这个答案()