简单的Rails问题

时间:2011-07-13 14:05:18

标签: ruby-on-rails

我有一对多的用户关联< -Posts。

某些帖子已关联,其他帖子的user_id为nil

如果,在ERB,我这样做:

post.user_id? post.user.email

我得到了

undefined method `email' for nil:NilClass

迭代帖子时。为什么我的初始条件不能防止这种情况?

2 个答案:

答案 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?,尽管这仍然是完全有效的。这允许您制作简短的条件语句,如上所述。