germsvel / phoenix_test

MIT License
144 stars 20 forks source link

Deep merge form data in nested/prefixed forms #81

Closed soundmonster closed 2 months ago

soundmonster commented 2 months ago

Current implementation performs multiple passes over form defaults before merging in "user"-supplied form data. Map.merge works well for flat forms where name attributes on inputs are not nested. When nesting is in place and attributes look like this: user[name], this approach breaks as default check boxes override hidden inputs, select defaults override everything else, etc.

This patch uses replaces Map.merge with DeepMerge.deep_merge for form data helpers, in the same way it's already done in some places in the live driver.

N.B. this bug occurs for the static driver but not for the live driver that already uses DeepMerge.