Hi,
I stumbled upon a problem when I tried to make dynamically generated forms.
I’m trying to list some elements, each has 2 properties - id
and selected?
.
I implemented those properties as hidden_inputs:
<%= hidden_input(@form, :hidden, name: "data[][id]", value: @data.id) %>
<%= hidden_input(@form, :hidden, name: "data[][selected?]", value: "false") %>
I expected POST request to be list of maps with 2 keys. Logs showed that I’m getting list of maps with one key:
%{"_csrf_token" => "FykPHTkdHA0JDE4pIiYtC1ViQAwMNgAAScbpO/YoY4vgLJcBz68BEg==",
"_utf8" => "✓",
"data" => [
%{"id" => "aH5aq4V0Ywk"},
%{"selected?" => "false"},
%{"id" => "d1vQMIisJuc"},
%{"selected?" => "false"},
%{"id" => "TtXMeMR81q4"},
%{"selected?" => "false"},
%{"id" => "Shk7qcvqDOo"},
%{"selected?" => "false"},
%{"id" => "YnGgGIlnlNI"},
%{"selected?" => "false"},
%{"id" => "CpaOh4poNms"},
%{"selected?" => "false"},
%{"id" => "A7lxd7RL1To"},
%{"selected?" => "false"}
],
"format" => "MP3"}
So I think []
in name just creates new entry.
How can I make maps like:
%{"id" => "YnGgGIlnlNI", "selected?" => "false"}, (...)
Putting []
at end gives me values as list of each input:
%{"_csrf_token" => "FCMOOh9TN00Fc3EYNy04CGEsCzcPAAAAPicWiar/UKIVYAvANxsyFQ==",
"_utf8" => "✓",
"data" => %{
"id" => ["aH5aq4V0Ywk", "d1vQMIisJuc", "TtXMeMR81q4", "Shk7qcvqDOo", "YnGgGIlnlNI",
"CpaOh4poNms", "A7lxd7RL1To"],
"selected?" => ["false", "false", "true", "false", "true", "false", "false"]
},
"format" => "MP3"}
If there’s no resolution I’m gonna stick with 2nd way, but maybe it can be done as I want to?