Question

My question is quite simple, I have a plain HTML form (no helpers, no models) and I want to send the parameters so params dictionary appears to be an array.

This is my code:

<div class="headers_line">
  <div class="header_field">
    <input type="text" placeholder="Header name" name="header[0][name]" class=
    "parameter_input" />
  </div>

  <div class="header_field">
    <input type="text" placeholder="Value" name="header[0][value]" class=
    "parameter_input" />
  </div>
</div>

<div class="headers_line">
  <div class="header_field">
    <input type="text" placeholder="Header name" name="header[1][name]" class=
    "parameter_input" />
  </div>

  <div class="header_field">
    <input type="text" placeholder="Value" name="header[1][value]" class=
    "parameter_input" />
  </div>
</div>

<div class="headers_line">
  <div class="header_field">
    <input type="text" placeholder="Header name" name="header[2][name]" class=
    "parameter_input" />
  </div>

  <div class="header_field">
    <input type="text" placeholder="Value" name="header[2][value]" class=
    "parameter_input" />
  </div>
</div>

And this is what my params looks like:

"header"=>{"0"=>{"name"=>"jnjnnj", "value"=>"nnjjn"}, "1"=>{"name"=>"jnnjjn", "value"=>"jnjnnj"}, "2"=>{"name"=>"jnjnjnjn", "value"=>"jnnj"}, "3"=>{"name"=>"", "value"=>""}}

Trying to use header[][name] and header[][value] didn´t work either.

Thanks

Was it helpful?

Solution 2

Ok, based on @house9 comment I did the following:

I used header[name][] and header[value][]

Then I created an array of hashes by doing:

headers = params[:header][:name].zip(params[:header][:value])

OTHER TIPS

Sorry, I was totally confused in the previous answer.

params[:header].values.map(&:symbolize_keys) will give you the array you want.

You cannot get it directly.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top