Ruby on rails 迭代表单post数据上的多个字段

Ruby on rails 迭代表单post数据上的多个字段,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,在我的rails应用程序中,我目前能够从两个表单字段name=“start”和name=“end”获取表单post数据。发布数据如下: start: 2018-05-18 12:00 end: 2018-05-18 12:00 post "/time" do # Assuming the number of starts and ends will be same, ... params[:start].count.times do |i| time = DoTime.new

在我的rails应用程序中,我目前能够从两个表单字段
name=“start”
name=“end”
获取表单post数据。发布数据如下:

start: 2018-05-18 12:00
end: 2018-05-18 12:00
post "/time" do
  # Assuming the number of starts and ends will be same, ...
  params[:start].count.times do |i|
    time = DoTime.new
    time.started_at = params[:start][i]
    time.finished_at = params[:end][i]
    time.profile = current_user
    time.save!
  end

  redirect "/profile"
end
下面是获取post数据并对其进行处理的代码

post "/time" do
  time = DoTime.new
  start = params["start"]
  finish = params["end"]
  time.started_at = start
  time.finished_at = finish
  time.profile = current_user
  time.save
  redirect "/profile"
end
我已经实现了一个动态表单,它允许用户复制开始和结束字段任意多次。所有这些都是在提交之前添加HTML表单字段,并将其与表单一起发布。新post数据的示例如下:

start: 2018-05-18 12:00
end: 2018-05-18 12:00
start: 2018-05-19 12:00
end: 2018-05-19 12:00
我想知道如何在ruby中循环查找
start
end
的每个实例,并为找到的每个元素运行上面的代码。有什么建议吗?我试过几种不同的方法,但总是出错


谢谢

如果我正确理解了您的问题,您希望
params[:start]
params[:end]
包含一个日期数组。要做到这一点,您需要将所有重复开始字段的
name
属性设置为“start[]”,类似地,对于结束字段,将其设置为“end[]”

现在,您可以迭代控制器中的值并创建多个对象,如下所示:

start: 2018-05-18 12:00
end: 2018-05-18 12:00
post "/time" do
  # Assuming the number of starts and ends will be same, ...
  params[:start].count.times do |i|
    time = DoTime.new
    time.started_at = params[:start][i]
    time.finished_at = params[:end][i]
    time.profile = current_user
    time.save!
  end

  redirect "/profile"
end

如果我正确理解了您的问题,您希望
params[:start]
params[:end]
包含一个日期数组。要做到这一点,您需要将所有重复开始字段的
name
属性设置为“start[]”,类似地,对于结束字段,将其设置为“end[]”

现在,您可以迭代控制器中的值并创建多个对象,如下所示:

start: 2018-05-18 12:00
end: 2018-05-18 12:00
post "/time" do
  # Assuming the number of starts and ends will be same, ...
  params[:start].count.times do |i|
    time = DoTime.new
    time.started_at = params[:start][i]
    time.finished_at = params[:end][i]
    time.profile = current_user
    time.save!
  end

  redirect "/profile"
end

你能发布
params
的完整值吗?你能发布
params
的完整值吗?嗯。这是我@jagdeep的解决方案,但似乎没有实现。我在线阅读,可能需要更换助手,但无法理解。它似乎只是得到表单中的最后一项。谢谢,我没有看到循环外的重定向,犯了一个愚蠢的错误,把它留在了。。。所有工作都很完美,谢谢!嗯。这是我在@jagdeep上找到的解决方案,但似乎没有成功。我在线阅读,可能需要更换助手,但无法理解。它似乎只是得到表单中的最后一项。谢谢,我没有看到循环外的重定向,犯了一个愚蠢的错误,把它留在了。。。所有工作都很完美,谢谢!