Ruby on Rails使用计数器,即“i”,变量名
我在Rails中有一个表单,用户可以在其中输入多个记录。 我将编写一些JavaScript,用户可以拥有几乎无限数量的记录。 我的哈希看起来像这样:
inputA_1, inputB_1, inputC_1 inputA_2, inputB_2, inpuctC_2
在我的控制器中,我想做一个while
循环来遍历行并将它们保存到数据库中,例如:
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
问题是我不知道如何制作“ i
” :inputA_i
是i
的值。
任何帮助,将不胜感激。
将i
插入字符串并将字符串转换为symbol
:
@inputA = [:params]["inputA_#{i}".to_sym] @inputB = [:params]["inputB_#{i}".to_sym] @inputC = [:params]["inputC_#{i}".to_sym]
我可以建议使用表单元素的数组序列化吗?:
当提交具有该HTML的表单时,值将变为params哈希上的数组:
params[:inputA] #=> ["Hi", "There", "Sir"]
因此,您所有的JavaScript所要做的就是创建更多具有相同名称的输入,以[]
结尾。 在控制器中处理这些输入要简单得多。
params[:inputA].each do |value| @record = Record.new @record.inputA = value @record.save end
你可以像这样制作一个字符串
"hello #{name}"
要么
"%s means %s" %["how do you do?", "hello"]
希望它可以帮助!