Closed Nazar84 closed 2 years ago
Hi. I cannot find an error here, can you post what your expected result should be? The object you've posted show exactly the values and names of your given input examples.
If I use fields with name index in 'correct' order like this:
<input type="hidden" name="Company[Phone][0][id]" value="122" class="form-control" />
<input type="hidden" name="Company[Phone][0][phone]" value="3339991111" class="form-control" />
<input type="hidden" name="Company[Phone][1][id]" value="125" class="form-control" />
<input type="hidden" name="Company[Phone][1][phone]" value="33" class="form-control" />
I have got the result:
Phone => [
{
id => 122,
phone => 3339991111,
},{
id => 125,
phone => 33,
},
],
At first example I receive hash of hashes. At this example I have array of hashes.
Hi, this is exactly what should happen. This library does create data out of input names, and when your input names are not "in order", it must create an object instead of a real array, because arrays cannot have "gaps" in the index numbers.
This library does not check or "assume" that the gap should be ignored and make an array out of it. It doesn't matter if the keys are numbered or have any other arbitrary value, it will be an object (hash you call it).
Real arrays only, and really only, can be produced when you have keys starting with zero and with no gaps in between. 0,1,2,3,4
is ok, 0,1,3,4,5
isn't.
You have to create correct names of inputs if you really want an array instead of an object.
It is no bug nor a feature that is supported by this library. It boils basically down to a previous feature request of you, manipulating data before/after the output. You have to do it your own way, when your data/input names is different to the things you need.
Btw. - Working without any key name []
will also not work here, as every empty key []
will increase index number in the result, which is also expected.
Thank You very much!
HI! I`v got a little bit problem. When my input fields have names (index) out of order the hash is in wrong format.
I dynamically add and delete fields so the situation is common. Maybe there is sense to use array without index (like additional opportunity to use the array). For method 'fromJson' use each next element without index binding.