迭代表单发布数据

时间:2018-05-17 01:50:29

标签: ruby-on-rails ruby ruby-on-rails-4

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

start: 2018-05-18 12:00
end: 2018-05-18 12:00

这是获取帖子数据并对其执行操作的代码。

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表单字段并将其与表单一起发布。新帖子数据的一个例子如下:

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以查找startend的每个实例,并为它找到的每个元素运行上面的代码。任何指针或建议?我尝试了几种不同的方法,但一直遇到错误。

由于

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您希望params[:start]params[:end]包含一系列日期。为此,您需要将所有重复开始字段的name属性设置为" start []"对于 end 字段,同样将其设置为" end []"。

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

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