对在Ruby中调用对象字段感到困惑

时间:2014-02-17 07:47:29

标签: ruby-on-rails ruby object

为什么会收到此错误消息?我正在努力使每个视频的帐户名显示出来。用户和帐户自行完美运行。如果我不包含.account_name,我只会得到一个丑陋的存储代码: 我想我对如何访问对象中对象的字段感到困惑。

视频#index中的NoMethodError 未定义的方法`account_name'代表nil:NilClass

<% @videos.each do |video|%>
    <tr>
        <td><%= video.file %></td>
        **<td><%= video.user.account_name %></td>**
        <td><%= video.name %></td>
    </tr>
<% end %>

2 个答案:

答案 0 :(得分:1)

显然,Video没有User

改变这个:

<td><%= video.user.account_name %></td>

到此:

<td><%= video.user.try(:account_name) %></td>

答案 1 :(得分:1)

确保您在模特之间建立了关系。

应用/模型/ user.rb

class User < ActiveRecord::Base
  has_many :videos
end

应用/模型/ video.rb

class Video < ActiveRecord::Base
  belongs_to :user
end

这使您可以执行以下操作:

$ rails console
> v = Video.first
> v.user.account_name
> u = User.first
> u.videos