我在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
的值。
任何帮助都将受到赞赏。
答案 0 :(得分:2)
将i
插入字符串并将字符串转换为symbol
:
@inputA = [:params]["inputA_#{i}".to_sym]
@inputB = [:params]["inputB_#{i}".to_sym]
@inputC = [:params]["inputC_#{i}".to_sym]
答案 1 :(得分: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
答案 2 :(得分:0)
你可以制作一个像这样的字符串
"hello #{name}"
或
"%s means %s" %["how do you do?", "hello"]
希望它可以提供帮助!