Rails - 从视图中的Index Action访问实例变量属性

时间:2011-10-05 22:37:18

标签: ruby-on-rails

模型

class Account < ActiveRecord::Base
  belongs_to :user
end


class User < ActiveRecord::Base 
  has_one :account  

  devise :database_authenticatable, :registerable,
     :recoverable,  :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation, :remember_me
end

控制器

class AccountsController < ApplicationController

before_filter :authenticate_user!

def index
 @accounts = Account.all

end

查看

p id="notice"><%= notice %></p>

<table>
  <tr>
<th>Account Number</th>
    <th>User Id</th>
    <th>Email Address</th>
    <th></th>
<th></th>
<th></th>
   </tr>
 <% @accounts.each do |account| %>
  </tr>  
   <td><%= account.Number %></td>
  <td><%= account.user_id %></td>
  <td><%= account.user.email %></td>
      <td><%= link_to 'Show', account %></td>
      <td><%= link_to 'Edit', edit_account_path(account) %></td>
  <td><%= link_to 'Destroy', account, :confirm => 'Are you sure?', :method =>                                :delete %></td>
     </tr>
     <% end %>
  </table>
  <br />
  <%= link_to 'New Account', new_account_path %>

我可以从其他操作中访问account.user.email但是我很难过为什么我不能在这里访问它而是获取未定义的方法'电子邮件为nil:NilClass? 更新:我需要检查零值。通过在我的视图中添加以下内容来修复它:

<%= account.user.email if account.user %>

1 个答案:

答案 0 :(得分:2)

用户对象为空,可能是帐户记录中缺少密钥?我会抛出一个提供帐户PKEY的异常,并快速查看数据库,以确保实际上有一个用户密钥限制它。

希望有助于调试。