Ruby on Rails usando contador, es decir, “i”, en un nombre de variable

Tengo un formulario en Rails donde los usuarios pueden ingresar múltiples registros. Voy a escribir algunos JavaScript donde los usuarios pueden tener un número virtualmente ilimitado de registros. Mi hash se verá así:

inputA_1, inputB_1, inputC_1 inputA_2, inputB_2, inpuctC_2 

En mi controlador quiero hacer un bucle while para iterar a través de las filas y guardarlas en la base de datos, por ejemplo:

 z = 0 i = 1 while z = 0 @inputA = [:params][:inputA_i] @inputB = [:params][:inputB_i] @inputC = [:params][:inputC_i] if @inputA.nil? z=1 else @record = [inputA: @inputA, inputB: @inputB, inputC: @inputC] @record.save i = i + 1 end end 

El problema es que no sé cómo hacer que la ” i ” de :inputA_i sea ​​el valor de i .

Cualquier ayuda en eso sería apreciada.

Interpolar i en una cadena y convertir una cadena en un symbol :

 @inputA = [:params]["inputA_#{i}".to_sym] @inputB = [:params]["inputB_#{i}".to_sym] @inputC = [:params]["inputC_#{i}".to_sym] 

¿Puedo sugerir una matriz de matriz de elementos de formulario en su lugar ?:

 

Cuando se envía un formulario con ese HTML, los valores se convierten en una matriz en el hash params:

 params[:inputA] #=> ["Hi", "There", "Sir"] 

Así que todo lo que tu JavaScript tiene que hacer es crear más entradas que tengan el mismo nombre, que terminan en [] . El procesamiento de estas entradas en el controlador es mucho más simple.

 params[:inputA].each do |value| @record = Record.new @record.inputA = value @record.save end 

Puedes hacer una cuerda como esta.

 "hello #{name}" 

o

 "%s means %s" %["how do you do?", "hello"] 

Espero que pueda ayudar!