我正在尝试使用 Rails 4 制作一个应用程序。
我有 2 个表 - user.rb 和 profile.rb。
User has one profile
Profile belongs to User
用户具有名为 :first_name 和 :last_name 的字符串属性
在我的个人资料显示视图中,我有这一行:
<%= "#{@profile.user.first_name} #{@profile.user.last_name}" %>
我现在尝试使用以下元素制作个人资料索引视图页面:
<% Profile.all.sort_by(&:created_at).in_groups_of(3) do |group| %>
<div class="row">
<% group.compact.each do |profile| %>
<div class="col-md-4">
<div class="indexdisplay">
<%= image_tag profile.image_url, width: '100%', height: '200px' if profile.image.present? %>
<div class="indexheading"> <%= link_to "#{@profile.user.first_name} #{@profile.user.last_name}" %>, profile %> </div>
</div>
</div>
<% end %>
</div>
<% end %>
我收到一个错误,内容如下:
undefined method `user' for nil:NilClass
我不明白该行如何在显示视图中正常工作,但在索引视图中不起作用。我也不明白为什么它认为用户是一种方法。这是一张桌子。
你正在调用方法user
on @profile
。是的,它是一个关联记录,但它是一个方法调用。问题是你在实例变量上调用它@profile
,鉴于所提供的信息不存在。调用时不存在的实例变量返回nil
。调用方法nil
导致您遇到错误消息。
的父循环包装器<%= "#{@profile.user.first_name} #{@profile.user.last_name}" %>
是一个循环profile
in group
。替换实例变量@profile
有变量profile
。这应该可以解决你的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)