2016-05-08 1 views
1

に追加しましたnull id。Railsのダミーオブジェクトは、私はレール4.2を使用して、私は奇妙な問題を発見したActive Recordの配列

例:

Error Image

+0

十分ではありませんこの特別なレコードがなぜ表示されているのかを知るためにここに情報。これらのインスタンス変数を定義するコードを表示するのはどうですか?ところで、StackOverflowのコンベンションでは、スクリーンショットではなくテキストとしてコードを貼り付けています(本当に必要な場合を除きます)。 –

+0

あなたの 'つぶやき/フォーム'は新しいTweet(おそらく 'form_for Tweet.new'のようなもの)を構築すると思います、それは可能ですか? – spickermann

+0

Tweet.newのコードを部分的に記述してレンダリングしても、同じバグが表示されます。 –

答えて

3

あなたのコントローラにこの空のTweetを自分で構築する:

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

この問題を回避するには、いくつかの方法があります。

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

それとも、まだデータベースに保存されていないtweetsを除外するために使用して、あなたを変更することができます:あなたは@tweets配列にそれを追加することなく、新しいツイートを構築することができ

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

それはうまくいった、なぜこのように振る舞うのか説明できるなら、私にとっては役に立ちます。 私の理解によれば、非永続レコードを@tweetsに追加するべきではありません。 –

+1

'current_user.tweets'は、すべてのユーザの'つぶやき 'を含む配列を返します。 'current_user.tweets.new'はその配列に新しいツイートを追加します。これはどのように動作するのですか?説明する方法がわからないなぜそのレコードを配列に追加すべきではないと思いますか? – spickermann

+0

Tweetに新しいオブジェクトを保持する2つのインスタンス変数tweetと、クエリDBとストアのみのオブジェクトを保存する他のつぶやきがあるので、追加するべきではないと思います。 –

関連する問題