Evan Ward
Evan Ward

Reputation: 1419

Ruby - Set of inputs to array

I'm trying to have a dynamic set of inputs in a form, that start with just one, where you can add or remove them with add/delete buttons. Then upon submission of a form, it turns the values of the inputs into a hash then that hash into a string for storing. I really have no idea where to start. So any tips will be helpful.

If using javascript would help, I can go that route, but i'm not sure how to make the javascript and ruby talk.

Upvotes: 0

Views: 75

Answers (2)

Karl Wilbur
Karl Wilbur

Reputation: 6187

As pretty much a common web thing (not Rails-specific), you would make the name value look like some_name[].

So instead of having multiple inputs with different names like this:

<input type='text' id='my_input_1' name='my_input_1' value='string_1' />
<input type='text' id='my_input_2' name='my_input_2' value='string_2' />
<input type='text' id='my_input_3' name='my_input_3' value='string_3' />

...where on the server you get:

params :my_input_1 # 'string_1'
params :my_input_2 # 'string_2'
params :my_input_3 # 'string_3'

You would have:

<input type='text' id='my_input_1' name='my_inputs[]' value='string_1'  />
<input type='text' id='my_input_2' name='my_inputs[]' value='string_2'  />
<input type='text' id='my_input_3' name='my_inputs[]' value='string_3'  />

...where on the server you get:

params :my_inputs # ['string_1','string_2',string_3']

Upvotes: 1

Sculper
Sculper

Reputation: 755

Depending on your use-case, there are a few options you might want to use. Since you've tagged this with rails, I'm assuming you have access to JQuery. Here's one (very simple) example of how you might go about adding fields to the page dynamically using it:

https://jsfiddle.net/3Lyvw0jm/

If you plan on storing these fields in one of your models, you may want to take a look at implementing nested attributes.

Upvotes: 2

Related Questions