私は現在、さまざまな AR モデルのフォームを含むいくつかのパーシャルを持っています。これらを使用してダッシュボード スタイルのページを作成しているので、(ダッシュボード コントローラー内のさまざまなアクションに投稿するのではなく) CRUD コントローラーに ajax 投稿を行うことができます。
AR を使用してデータを検証しているので、CRUD コントローラーで正しいオブジェクトを使用して正しいパーシャルをレンダリングし、それを応答として使用できるようにしたいと考えています。このようなもの:
if @note.save?
flash[:notice] = "Note successfully saved!"
render '_note_form', :layout => false
else
flash[:notice] = "Something went wrong. Note was not saved!"
flash[:error] = @note.errors.full_messages.to_sentence
render '_note_form', :layout => false
end
次に、次のようにフォームを応答に置き換えることで、その応答を処理する js 関数を追加します。
$(function() {
$('form#new_note_form').bind('ajax:success', function(evt, data, status, xhr){
$("#new_note_form").replaceWith(xhr.responseText);
});
});
これにより、標準の投稿を行った場合と同じタイプの検証が行われますが、ページ全体ではなく部分的なもののみが更新されます。
これを処理するより良い方法があるように感じずにはいられません。エラー/成功メッセージをjson経由で渡し、フロントエンドで適切に処理する必要がありますか? フォーム全体を置き換えるのは悪い習慣ですか?