我有一对多的用户关联< -Posts。
某些帖子已关联,其他帖子的user_id为nil
。
如果,在ERB,我这样做:
post.user_id? post.user.email
我得到了
undefined method `email' for nil:NilClass
迭代帖子时。为什么我的初始条件不能防止这种情况?
答案 0 :(得分:3)
我认为你的语法没有意义。尝试:
post.user.email if post.user_id?
或
post.user_id? ? post.user.email : nil
或
if post.user_id?
post.user.email
end
或
post.user.try(:email)
所有这些都应该有用。注意:您还应该能够使用post.user.present?
或!post.user.nil?
,它们看起来比检查ID更清晰。
答案 1 :(得分:0)
你应该能够稍微改写一下,以便更有意义:
<%= post.user.email if post.user %>
我不太了解您的代码,因为它看起来不像您发布的条件,但上面的ERB语句应该可以解决问题。
编辑:我应该补充一点,Ruby在条件语句中将nil对象评估为false,因此不需要检查user.nil?
,尽管这仍然是完全有效的。这允许您制作简短的条件语句,如上所述。