2013-10-21 116 views
1

我有一個表格顯示與workorder相關的時間條目(events)。 用戶可以輸入任何表格行的檢查。 對於每個選中的行,我想在invtime表中創建一條新記錄。Rails根據檢查的記錄創建新記錄

invtimebelongs_to :event

eventhas_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(咖啡標記)嗎?或者我可以用Ruby做到這一點?

回答

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 
+0

感謝您的幫助! – Reddirt

+0

一個後續 - 你有'#在這裏做你的邏輯'我可以在同一個控制器中執行'new'邏輯嗎? – Reddirt

+0

當然是的,但你可能想要在Invtime模型中保留有關Invtime的邏輯 – MrYoshiji

相關問題