5

Rails remote true を ajax 呼び出しに使用していますが、応答フォーム コントローラーの処理でエラーが発生しました。

私がやっていることは、初めてビューにレンダリングするフォームを部分的に配置し、form_for の html オプションで id を与えたことです。また、保存ボタンやキャンセル ボタンなどのフォームに jQuery を適用し、そのフィールドの 1 つに日付ピッカー用のスクリプトを 1 つ適用しました。

次のようにコードを配置したjsファイルをレンダリングするためにformat.jsを使用してサーバーからの応答を処理するため

if @vairable.save
 format.js { render 'some-file' }
else
 format.js { render 'something'}
end  

変数が正常に保存された場合はフォームを適切に閉じますが、検証が発生した場合は、js.erb ファイルに JavaScript コードを記述してフォームを再度レンダリングします。この応答の処理に問題があります。エラーは適切に表示されていますが、フォームがエラーで再度レンダリングされると、フィールドとボタンに適用された jQuery イベントが機能しません。jQuery イベントは発生しません。

この問題は、モデルの検証が行われ、検証レールが新しいレンダリング フォームで表示される場合にのみ発生します。

4

1 に答える 1

2

respond_to次のようなブロックで応答をラップする必要があります。

respond_to do |format| 
  if @variable.save
    format.js { render 'some-file' }
  else
    format.js { render 'something'}
  end  
end

編集: jQuery タグを に変更する必要があります$(document).on(...)。例えば。

#change this:
$("#your-target-id").click(function(){
  alert("This doesn't work after your have submitted via ajax")
});

#to this:
$(document).on("click", "#your-target-id", function() {
  alert("This should work after ajax submission, and when errors are displayed");
});
于 2013-05-10T17:34:45.260 に答える