Rails虚拟对象添加到Active Record Array

时间:2016-05-08 19:30:45

标签: ruby ruby-on-rails-4 activerecord

我使用rails 4.2,我发现了一个奇怪的问题:

 @tweet = current_user.tweets.new
 @tweets = current_user.tweets

当我在视图中循环时:

<%= render @tweets %>

我得到一个带有空id的额外记录。

示例:

Error Image

1 个答案:

答案 0 :(得分:3)

您自己在控制器中构建了这个空Tweet

@tweet = current_user.tweets.new
@tweets = current_user.tweets

有几种方法可以避免这个问题。您可以在不将其添加到@tweets数组的情况下构建新推文:

@tweet = Tweet.new(user: current_user)
@tweets = current_user.tweets

或者您可以更改您的,以排除尚未保存到数据库的tweets

<%= render @tweets.select(&:persistent?) %>