8

has_many私はモデルを持っていますモデルコメントのそれを投稿してください。

Posts showアクションには、見つかったのリストがありCommentsます@comments = @post.comments

新しい を作成するためのフォームもありますComments。フォームには、 で作成されたオブジェクトがあります@comment = @post.comments.build

これはすべて、コメントを一覧表示して正常に作成するために機能します。

この問題は、コメントの送信時にエラーが発生した場合に発生します。Post#showエラーは、 を介して同じ形式 (so, on ) で表示されrender "posts/show"ます。この場合、@comments = @post.comments再度設定する必要がありますが、今回のコメントのリストには、ユーザーが作成しようとしている未保存のコメントが含まれています。

を使用して解決しましたが@post.comments.all、これは保存されたモデルのみを提供しますが、Rails はこれが Rails 4 では非推奨であると不平を言っています。

から取得したコメントのリストから未保存のコメントを削除するにはどうすればよい@post.commentsですか?

4

4 に答える 4

1

最も効率的な方法は、すべてのコメントを再度取得するのではなく、ビュー内の新しいレコードを無視することです。

したがって、あなたの見解では、次のようなことを行います。

= f.simple_fields_for :comments do |c|
  - unless c.object.new_record? 
    = render 'comment_fields', :f => c
于 2013-09-17T07:42:59.440 に答える