Разбор вложенных параметров Rails - PullRequest
0 голосов
/ 15 марта 2019

У меня есть модель Klass, в которой может быть несколько Note объектов.В моей форме у меня есть имя поля klass[notes][][note_ids][].

Теперь, если я передам в запрос следующие параметры:

klass[notes][][note_ids][]=5cb95789-6c35-4d39-aa17-c3ddbbbcf540&klass[notes][][note_ids][]=2cfb26df-21b4-43d7-aa65-735569d42ad9

Они будут проанализированы следующим образом (используя Rack ::Utils.parse_nested_query):

{"klass"=>{"notes"=>[{"note_ids"=>["5cb95789-6c35-4d39-aa17-c3ddbbbcf540", "2cfb26df-21b4-43d7-aa65-735569d42ad9"]}]}}

Как мне сделать так, чтобы они вместо этого разбирались в следующее:

{"klass"=>{"notes"=>[{"note_ids"=>["5cb95789-6c35-4d39-aa17-c3ddbbbcf540"]}, {"note_ids"=>["2cfb26df-21b4-43d7-aa65-735569d42ad9"]}]}}

1 Ответ

1 голос
/ 15 марта 2019

При существующей схеме парсер не сможет определить, нужно ли сгруппировать два идентификатора на уровне note_ids или на уровне notes.Он группирует их по первому действительному уровню, который находит.

Вы могли бы помочь анализатору, сгруппировав внешний уровень вручную.Например,

klass[notes][0][note_ids][]=1&klass[notes][1][note_ids][]=2

анализируется как

 {"klass"=>{"notes"=>{"0"=>{"note_ids"=>["1"]}, "1"=>{"note_ids"=>["2"]}}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...