私は以下の関係を持っています::discussion has_many :posts
、私は、ディスカッションの中に入れ子にされた投稿モデルを持っています。検証エラーのネストされたリソースは、すべての子モデルの編集を許可します
ディスカッション#show viewには、ディスカッションに投稿(返信)を作成できるフォームがあります。
は私が持っている私の更新アクションで:
if @discussion.update_attributes(params[:discussion])
format.html { redirect_to(@discussion, :notice => 'success') }
else
format.html { render :action => "edit" }
end
私はAにfield_for :posts, @post
を使用)、ネストされたモデル更新Bを許可する)単一のポストが作成のみを許可するようにフォームを制限します。
ただし、検証が失敗した場合は、フォームに属するすべての投稿が編集可能な形式で表示されます。私は、ユーザーが単一の投稿を再編集できるようにしたいだけです。これを達成する良い方法はありますか?
確認が失敗した場合、投稿は保存されず、特定の新しい投稿をピンポイントする方法がわかりません。
私は、議論用フォームを使って投稿を作成すべきではないかもしれないと思っていました。これは、オーバーヘッドのレイヤーのようなものだからです。しかし今は入れ子にしたので、投稿/新しいビューにルーティングすることはできません。
私はあなたの質問を完全に理解していません。ユーザーが送信する前にディスカッションフォームからすべての投稿を編集できるのであれば、検証エラーに応じて編集するときに同じことをすることができるはずです。議論の中に投稿がたくさんあり、これが意味をなさないのであれば、fields_forを使うのはおそらくどのような場合でも最高のデザインではないでしょう。 –
'field_for:posts、@ post'を使用して、フォームを1回の投稿作成/編集のみを許可するように制限しました。それはショーアクションです。検証が失敗した場合にのみ、編集ビューがレンダリングされ、他のすべての投稿が表示および編集可能になります。 – lulalala
編集アクションはフォームを1つの投稿に限定するために何をしますか?それが何であれ、レンダリングしようとする前に更新アクションが同じように動作することを確認する必要があるかもしれません:action => 'edit'(単に編集アクションに関連付けられたビューをレンダリングします)。 –