MurifoX の答えは正しい道にありました。これが私がやったことのようなものです:
if @model.save
if params[:commit] == "Save"
render js: %(window.location.pathname='#{object_path @object}')
elsif params[:commit] == "Save and Continue"
respond_to do |format|
format.js do
@object = Object.new
render 'new'
end
end
end
end
基本的に、フォームにはリモートが true に設定され、AJAX リクエストに適切に応答します (jQuery.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} も使用されます)。 [保存] をクリックすると、ブラウザーは JavaScript を介して適切なページにリダイレクトされます。[保存して続行] をクリックすると、最初にフォームを読み込むために使用されたのと同じ _partial.js.erb が再び AJAX 化されます。新しいオブジェクトを使用してフォームをクリアします. 実際のコードでは、新しいオブジェクトが作成されたことを示すためにフラッシュも実行します.