From cf0624ddb2811441efeaa82ef56006290907cc86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Codru=C8=9B=20Constantin=20Gu=C8=99oi?= Date: Thu, 4 Apr 2024 21:24:00 +0100 Subject: [PATCH] Potential solution to handling arrays --- app/controllers/administrate/application_controller.rb | 9 +++++++-- app/views/fields/string/_form.html.erb | 6 +++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/controllers/administrate/application_controller.rb b/app/controllers/administrate/application_controller.rb index 63f486d5ae..7b8a11a9b5 100644 --- a/app/controllers/administrate/application_controller.rb +++ b/app/controllers/administrate/application_controller.rb @@ -204,10 +204,13 @@ def apply_collection_includes(relation) def resource_params params.require(resource_class.model_name.param_key) .permit(dashboard.permitted_attributes(action_name)) - .transform_values { |v| read_param_value(v) } + .to_h + .each_with_object({}) do |(key, value), result| + result[key] = read_param_value(key, value, resource_class) + end end - def read_param_value(data) + def read_param_value(key, data, resource_class) if data.is_a?(ActionController::Parameters) && data[:type] if data[:type] == Administrate::Field::Polymorphic.to_s GlobalID::Locator.locate(data[:value]) @@ -218,6 +221,8 @@ def read_param_value(data) data.transform_values { |v| read_param_value(v) } elsif data.is_a?(String) && data.blank? nil + elsif data.is_a?(String) && resource_class.columns_hash[key.to_s].array? + JSON.parse(data) else data end diff --git a/app/views/fields/string/_form.html.erb b/app/views/fields/string/_form.html.erb index 96e9d2630d..28253fa60c 100644 --- a/app/views/fields/string/_form.html.erb +++ b/app/views/fields/string/_form.html.erb @@ -19,5 +19,9 @@ By default, the input is a text field. <%= f.label field.attribute %>
- <%= f.text_field field.attribute %> + <% if field.resource.class.columns_hash[field.attribute.to_s].array? %> + <%= f.text_field field.attribute, value: JSON.dump(field.data) %> + <% else %> + <%= f.text_field field.attribute, value: field.data %> + <% end %>