如何使用一个表格中的结果填充表单,该表格可以编辑并保存到另一个表格中

时间:2015-12-11 05:46:10

标签: ruby-on-rails ruby activerecord

迄今为止的答案没有奏效,所以我重新写了我的求助请求。我希望我更清楚我正在努力解决的问题

我想将从表(Table1)返回的数组(Array1)中的字段移动到另一个数组(Array2),允许编辑并将每条记录写入Table2。

控制器中/ new_multiple中的所需方法:    1. @tasks = Task.find(params [:task_ids])#返回多条记录                                          #:task_ids是复选框标签
                                         #retrened从以前的表格    注意:这有效。    2.将每个@tasks移动到@event并发送到现有的new.html.erb表单进行编辑和/或确认,然后创建如下(??):

   @tasks.each do |task|
      @event = Event.new
      @event.location = task.task_location
      @event.description =  task.task_description
      event.start_date = start_date + task.days_from_from_start_task
      .....   more calculated fields
      ***send to form for edit, show, create and return for next record  (QUESTION 1 below)
   end

注意:***中的重定向和返回会转到表单,但数据不会显示在表单中。我还没有确定它是否实际返回。

问题:       1.有没有办法从控制器中的迭代中调用一个表单然后返回到其他记录的循环?       2.如果没有,我该怎么办(我可以吗?)           a)将多个@tasks记录移动到如上所述的@events数组中(用于在表格中显示以进行编辑)           b)告诉系统数组的每一行都是要在提交

上写入的新记录

背景

我正在创建一个允许安排未来事件集的应用程序。相关任务(集)保存在一个表中,并指定组中第一个任务发生的序列和天数。

用户通过设置条件 - 任务组和事件开始日期来启动流程。

然后,使用form_tag在表单上的表格中显示任务记录,并计算日期/时间。此时,它们看起来就像要创建的事件。每行都有一个复选框标记,用于选择组中的任务。在用户“勾选”他们选择的事件(或全部)之后,应用程序返回到控制器的名为new_multiple_events的方法

到目前为止,一切正常,我可以看到使用调试器在事件控制器中选择(勾选)的选定记录。

我现在想要单独显示每条记录,并允许用户编辑事件发生的计算日期和时间以及其他一些字段,例如位置和注释等,然后在事件中提交创建记录表。但这是我不知道的地方。 楷模:           任务表模型:

      task.task_description                     
      task.task_location                        
      task.task_notes                           
      task.days_from_start_task
      task.task_group_name

      Event table model:

      event.title = task.task_group_name
      event.location = task.task_location
      event.description = task.task_notes
      event.start_date = start_date + task.days_from_from_start_task
      etc...

我有一个表单适用于将个别事件输入日历,我想将数据从返回的任务数组(加上计算字段)移动到events数组中作为此表单的默认值,然后允许用户保存数据。

提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:0)

我不知道您是如何预先填写表单中正在编辑/创建的事件,但您的代码表明您正在模型中执行此操作。但是,您应该在呈现表单之前在控制器中创建该逻辑,因此请执行以下操作:

events_controller.rb

def new
  task = Task.find(params[:task_id])
  @event = Event.new
  @event.title = task.task_group_name
  @event.location = task.task_location
  @event.description = task.task_notes
  @event.start_date = start_date + task.days_from_from_start_task
end

然后像通常使用您自己找到的表单声明一样创建表单:form_for @event do |f|

请考虑我使用params [:task_id],建议您为嵌套在任务下的事件设置路由,以便您的url结构看起来像(例如):/ tasks / 13 / events / new

Goog运气

答案 1 :(得分:-1)

我正在结束这个问题,因为我没有收到相关答案。我想允许在将数据写入另一个表之前,从一个表中编辑所选数据。为了解决这个问题,我将所选数据保存到另一个表中,然后立即读取数据以进行编辑/更新。对于用户来说,它看起来是一样的。