0

我在 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.

任何帮助将不胜感激。

4

3 回答 3

2

插入i字符串并将字符串转换为symbol

@inputA = [:params]["inputA_#{i}".to_sym]
@inputB = [:params]["inputB_#{i}".to_sym]
@inputC = [:params]["inputC_#{i}".to_sym]
于 2012-09-18T18:39:56.117 回答
0

我可以建议对表单元素进行数组序列化吗?:

<form>
  <input type="hidden" name="inputA[]" value="Hi">
  <input type="hidden" name="inputA[]" value="There">
  <input type="hidden" name="inputA[]" value="Sir">
</form>

当提交带有该 HTML 的表单时,这些值将转换为 params 哈希上的数组:

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

因此,您的 JavaScript 所要做的就是创建更多具有相同名称的输入,以[]. 在控制器中处理这些输入简单得多。

params[:inputA].each do |value|
  @record = Record.new
  @record.inputA = value
  @record.save
end
于 2012-09-18T18:46:32.387 回答
0

你可以像这样制作一个字符串

"hello #{name}"

或者

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

希望它可以帮助!

于 2012-09-19T10:51:38.920 回答