From dea63f49ee18644ee5e8dee1fb57e0c742d27a97 Mon Sep 17 00:00:00 2001 From: "M.Shibuya" Date: Mon, 20 Sep 2021 21:45:38 +0900 Subject: [PATCH] Fix remote form to work with rails-ujs Refs. #3390 --- app/assets/javascripts/rails_admin/ra.remote-form.js | 7 ++++--- lib/rails_admin/config/actions/edit.rb | 2 +- lib/rails_admin/config/actions/new.rb | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/rails_admin/ra.remote-form.js b/app/assets/javascripts/rails_admin/ra.remote-form.js index 4bab8d4510..21dd1575c3 100644 --- a/app/assets/javascripts/rails_admin/ra.remote-form.js +++ b/app/assets/javascripts/rails_admin/ra.remote-form.js @@ -72,7 +72,7 @@ cancelButtonText = dialog.find(":submit[name=_continue]").html(); dialog.find('.form-actions').remove(); - form.attr("data-remote", true); + form.attr("data-remote", true).attr("data-type", "json"); dialog.find('.modal-header-title').text(form.data('title')); dialog.find('.cancel-action').unbind().click(function(){ dialog.modal('hide'); @@ -80,13 +80,14 @@ }).html(cancelButtonText); dialog.find('.save-action').unbind().click(function(){ - form.submit(); + window.Rails.fire(form[0], 'submit'); return false; }).html(saveButtonText); $(document).trigger('rails_admin.dom_ready', [form]) - form.bind("ajax:complete", function(xhr, data, status) { + form.bind("ajax:complete", function(event) { + var data = event.detail[0], status = event.detail[1]; if (status == 'error') { dialog.find('.modal-body').html(data.responseText); widget._bindFormEvents(); diff --git a/lib/rails_admin/config/actions/edit.rb b/lib/rails_admin/config/actions/edit.rb index 6ed0076f0f..23e8346f6c 100644 --- a/lib/rails_admin/config/actions/edit.rb +++ b/lib/rails_admin/config/actions/edit.rb @@ -31,7 +31,7 @@ class Edit < RailsAdmin::Config::Actions::Base @auditing_adapter&.update_object(@object, @abstract_model, _current_user, changes) respond_to do |format| format.html { redirect_to_on_success } - format.js { render json: {id: @object.id.to_s, label: @model_config.with(object: @object).object_label} } + format.json { render json: {id: @object.id.to_s, label: @model_config.with(object: @object).object_label} } end else handle_save_error :edit diff --git a/lib/rails_admin/config/actions/new.rb b/lib/rails_admin/config/actions/new.rb index 4c4dd4d85a..b917356f1c 100644 --- a/lib/rails_admin/config/actions/new.rb +++ b/lib/rails_admin/config/actions/new.rb @@ -42,7 +42,7 @@ class New < RailsAdmin::Config::Actions::Base @auditing_adapter&.create_object(@object, @abstract_model, _current_user) respond_to do |format| format.html { redirect_to_on_success } - format.js { render json: {id: @object.id.to_s, label: @model_config.with(object: @object).object_label} } + format.json { render json: {id: @object.id.to_s, label: @model_config.with(object: @object).object_label} } end else handle_save_error