Rails - 从视图中的索引操作访问实例变量属性
Posted
技术标签:
【中文标题】Rails - 从视图中的索引操作访问实例变量属性【英文标题】:Rails - Accessing instance variable properties from an Index Action in a view 【发布时间】:2011-10-05 22:37:18 【问题描述】:模型
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,但我很困惑为什么我不能在这里访问它,而是获得未定义的方法'email for nil:NilClass? 更新:我需要检查 nil 值。通过在我的视图中添加以下内容来修复它:
<%= account.user.email if account.user %>
【问题讨论】:
【参考方案1】:用户对象为空,可能帐户记录中缺少键?我会抛出一个异常,提供 Account PKEY 并快速浏览数据库,以确保实际上有一个 User 密钥被限制在它上面。
希望对调试有所帮助。
【讨论】:
以上是关于Rails - 从视图中的索引操作访问实例变量属性的主要内容,如果未能解决你的问题,请参考以下文章
Ajax 和 Rails 4:创建实例变量并更新视图而不刷新