1

我有一个表格,显示events与 a 相关的时间条目 () workorder。用户可以对任何表格行进行检查。对于每个选中的行,我想在invtime表中创建一个新记录。

invtime belongs_to :event

event has_many :invtimes

这是表格:

  <table>
  <thead>
  <tr>
    <th>Title</th>
    <th>Employee</th>
    <th>Date</th>
    <th>Hours</th>
    <th>Actions</th>
  </tr>
  </thead>
  <tbody>
  <% Event.where("workorder_id = ?", Invoice.find(@invoice).workorder_id).where("billed = ?", false).each do |event| %>
  <tr>
    <td><%= check_box_tag(:add_record) %></td>
      <td><%= event.title %></td>
      <td><%= event.employee.employee_full_name %></td>
      <td><%= event.starts_at.strftime("%m/%d/%Y") %></td>
      <td><%= event.hours %></td>
      <td></td>
  </tr>
  <% end %>
  </tbody>
</table>

我不确定如何在选中复选框的情况下处理返回的页面。我应该使用 Javascript (coffeescript) 吗?或者我可以用 Ruby 做吗?

4

1 回答 1

1

这应该这样做:

<tbody>
  <%= form_tag(your_path_helper) do %>
    <% Event.where("workorder_id = ?", Invoice.find(@invoice).workorder_id).where("billed = ?", false).each do |event| %>
      <tr>
        <td><%= check_box_tag 'event_ids_to_save[]', value: event.id, checked: Invtime.exists?(event_id: event.id) %></td>
        <td><%= event.title %></td>
        <td><%= event.employee.employee_full_name %></td>
        <td><%= event.starts_at.strftime("%m/%d/%Y") %></td>
        <td><%= event.hours %></td>
        <td></td>
      </tr>
    <% end %>
    <tr><td colspan='6'><%= submit_tag %></td></tr>
  <% end %>
</tbody>

控制器响应form_tag提交的对应动作:

def action_of_the_form_tag
  params[:event_ids_to_save].each do |event_id|
    event = Event.where(id: event_id)
    # do your logic here
  end
end
于 2013-10-21T19:43:58.057 回答