Submit and render with Turbo Stream

This commit is contained in:
David Cook
2024-06-04 15:59:10 +10:00
parent 50469fe53e
commit 89cedc4287
6 changed files with 30 additions and 17 deletions

View File

@@ -10,12 +10,17 @@ module Admin
if @cp_set.save
respond_to do |format|
format.json { render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer }
format.html { render inline: "saved" } #todo
format.turbo_stream {
flash.now[:success] = t('.success')
render :bulk_update, locals: { action: permitted_params[:action_name] } }
end
elsif @cp_set.errors.present?
respond_to do |format|
format.json { render json: { errors: @cp_set.errors }, status: :bad_request }
format.html { render inline: "errors" } #todo
format.turbo_stream {
flash.now[:error] = t('.error')
render :bulk_update, locals: { action: permitted_params[:action_name] }
}
end
else
respond_to do |format|
@@ -42,7 +47,7 @@ module Admin
each_with_index.map { |cp, i| [i, cp] }]
collection_attributes.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] }
end
format.html do
format.all do
# Inject action name and user ID for each column_preference
collection_attributes = permitted_params[:column_preferences].to_h.each_value { |cp|
cp[:action_name] = permitted_params[:action_name]

View File

@@ -0,0 +1,12 @@
= form_with url: bulk_update_admin_column_preferences_path, method: :put, id: :bulk_admin_column_preferences_form do |f|
= hidden_field_tag :action_name, action
- ColumnPreference.for(spree_current_user, action).each_with_index do |column_preference, index|
= f.fields_for("column_preferences", column_preference, index:) do |cp_form|
= cp_form.hidden_field :id
= cp_form.hidden_field :column_name
%label
= cp_form.check_box :visible
= t("admin.products_page.columns." + column_preference.column_name)
= f.submit t('admin.column_save_as_default')

View File

@@ -0,0 +1,3 @@
= turbo_stream.replace "bulk_admin_column_preferences_form" do
= render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash
= render partial: 'form', locals: { action: }

View File

@@ -15,15 +15,4 @@
data: { controller: "tom-select search", action: "change->search#changePerPage", "tom-select-options-value": '{ "plugins": [] }'}
/ Columns dropdown
= form_with url: bulk_update_admin_column_preferences_path, method: :put do |f|
= hidden_field_tag :action_name, "#{controller_name}_#{action_name}"
- ColumnPreference.for(spree_current_user, "#{controller_name}_#{action_name}").each do |column_preference|
= f.fields_for("column_preferences[]", column_preference) do |cp_form|
= cp_form.hidden_field :id
= cp_form.hidden_field :column_name
%label
= cp_form.check_box :visible
= t("admin.products_page.columns." + column_preference.column_name)
= f.submit t('admin.column_save_as_default')
= render partial: "admin/column_preferences/form", locals: { action: "products_v3_index" }

View File

@@ -761,6 +761,10 @@ en:
balance_due: "Balance Due"
destroy:
has_associated_subscriptions: "Delete failed: This customer has active subscriptions. Cancel them first."
column_preferences:
bulk_update:
success: "Column preferences saved"
error: "Column preferences could not be saved"
contents:
edit:
title: Content

View File

@@ -55,8 +55,8 @@ RSpec.describe Admin::ColumnPreferencesController, type: :controller do
end
end
context "html" do
let(:request_format) { :html }
context "turbo_stream" do
let(:request_format) { :turbo_stream }
let(:column_preference_params) {
{
'0': { id: column_preference.id, column_name: "name", visible: "0" },