所以我收到以下错误:
未定义的方法`email'代表nil:NilClass
提取的来源(第14行):
<ul>
<li><h5><%= newsletter.name if newsletter.image.present? %></h5></li>
By: <%= @user.email if @user.email.present? %> <--- line 14
这与此代码有关:
<% @newsletters.each do |newsletter| %>
<% @user = newsletter.user %>
<ul>
<li><h5><%= newsletter.name if newsletter.image.present? %></h5></li>
By: <%= @user.email if @user.email.present? %>
<li><%= image_tag newsletter.image.url(:medium) if newsletter.image.present? %></li>
</ul>
<% end %>
最后,我想向新闻简报的电子邮件地址的所有者展示。为什么这不起作用?
谢谢!
答案 0 :(得分:1)
当您的简报没有用户时,就会发生这种情况。您应该在显示用户电子邮件之前检查用户是否存在。
<ul>
<li><h5><%= newsletter.name if newsletter.image.present? %></h5></li>
<%if @user && @user.email.present? %>
By: <%= @user.email %>
<% end %>
<li><%= image_tag newsletter.image.url(:medium) if newsletter.image.present? %></li>
</ul>
<% end %>
答案 1 :(得分:1)
当没有用户在场时会发生这种情况。您可以使用@ Vimsha的解决方案。或试试这个:
<ul>
<li><h5><%= newsletter.name if newsletter.image.present? %></h5></li>
By: <%= @user.try(:email) %>
<li><%= image_tag newsletter.image.url(:medium) if newsletter.image.present? %></li>
</ul>
<% end %>
答案 2 :(得分:1)
您已经得到了答案:用户不存在时事通讯。要仅提取具有用户的简报,我建议您与用户一起加入表格。
@newsletters = Newsletter.where(conditions).all # what you're doing now - just an example
@newsletters = Newsletter.joins(:user).where(conditions).all # will exclude newsletters that don't have a user