私の Rails 3 アプリには、ユーザーがレコードを作成して編集できるフォームを含むページがいくつかあります。レコードを作成するには、ユーザーが「レコードの追加」ボタンをクリックすると、「新しいレコード」フォームを含むモーダル ダイアログが表示されます。ユーザーがフォームに入力して [保存] を押すと、モーダル ダイアログが消え、テーブルが部分的に更新され、新しいレコードが表示されます。レコードを編集するには、ユーザーは既存のレコードの横にある編集リンクをクリックします。これにより、「新しいレコード」フォームに似たフォームのモーダル ダイアログが表示されますが、タイトルは「レコードの編集」と「編集の保存」です。など
現在、テーブル パーシャルとフォーム パーシャルの 2 つのパーシャルでこれを行っています。フォーム パーシャルには、@editing 変数が true かどうかに基づいて「編集」タイトルが表示されます。
現在の動作方法は、ユーザーが [新しいレコード] ボタンをクリックすると、2 つのことを行う onClick 関数を持っているというものです。
1) 必要なオブジェクトを作成し、次のようにパーシャルをレンダリングする「新しい」アクションへの jquery ajax 呼び出し:
@editing = false
respond_to do |format|
format.js
{
render :update do |page|
page["#entry_div"].html(render :partial=> 'form');
end
}
end
2) div をモーダル ダイアログ (simplemodal) として表示する jquery 呼び出し。
オブジェクトの編集ボタンをクリックしても同じことが行われますが、「編集」アクションは @editing を true に設定し、Ajax 呼び出しは編集するオブジェクトの ID を送信します。
さらに、ユーザーが保存を押してオブジェクトが保存されると、「作成」アクションと「更新」アクションの両方が次のことを行います。
respond_to do |format|
if @record.save
@all_records = Record.where(:project_id => @project.id).all
format.js {
@save_message_div = 'save_message_div'
@table_container = 'table_div'
@table_partial = 'table'
@form_partial = 'form'
@form_container = "entry_div"
render 'saved'
}
end
end
「保存済み」は、テーブルのパーシャルを更新し、フォームをリセットし、「正常に保存されました」というメッセージを表示する .rjs ファイルです。
私の質問は、基本的に、これを正しく行っていますか? これらの呼び出しを行う最も最新で効率的で目立たない方法は何ですか? アクションで page["#divname"].html(render partial) タイプの呼び出しを引き続き使用する必要がありますか? rjs ファイルを使用してパーシャルをリロードし、保存メッセージを表示する必要がありますか? そうでない場合、これらの状況をどのように処理できますか (パーシャルのロードなど)?
ありがとうございます。さらに情報が必要な場合はお知らせください。