簡體   English   中英

如何在 Rails 中提交時設置多個默認表單值?

[英]how to set multiple default form values on submission in rails?

attendance表具有屬性statusdaterecuritment_idproject_site_id

project_siteattendanceone_to_many關聯

recuritmentattendance有 one_to_many 關聯。

當屬性status加入出勤#form 視圖時,我正在從recruitment表中獲取屬性。

<% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %> <% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %>這里@project_site.attendance_month包含出勤月份值。 根據月份,我計算天數列以及recuritmnet表中的name

這是視圖-

在此處輸入圖像描述


Holydays master 包含相應月份的 Holyday 日期,並在視圖中自動匹配日期並打印“H”,
所有輸入默認選擇為 P。最終的 submit_button 更改 boolean 屬性。 現在在最終提交時,我想將所有默認選擇的P推送到考勤表中。


出勤控制器.rb
<table>
   <thead>
      <tr>
         <th class="attendance-emp-name">Emp. Name</th>
         <% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %>
         <th class="text-center"><%= date %></th>
         <% end %>
      </tr>
   </thead>
   <tbody>
      <% @recruitment.where(location: @project_site.site_id).each do |recruitment| %>
      <tr>
         <td class="attendance-emp-name"><%= recruitment.name %></td>
         <% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %>
         <%= form_with(model: attendance, :html => {:id => 'attendance-form-validation'}, url:[@project_site, @attendance], local: true) do |f| %>
         <% if HolydayCalendar.find_by(date: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s), total_site_id: @project_site.site_id)%>
         <td class="holyday text-center"><%= "H" %></td>
         <% elsif recruitment.attendances.find_by(attendance_date: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s)) == nil %>
         <td>
            <%= f.select :status, [['P', 1], ['A', 2], ['L', 4], ['WE', 5], ['CO', 6]], {}, { onchange: 'this.form.submit()', class: 'attendance-select-input' } %>
         </td>
         <% else %>
         <% attendance_value =  recruitment.attendances.find_by(attendance_date: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s)) %>
         <%if attendance_value.status == 1 %>
         <td class="presant text-center"><%="P" %></td>
         <% elsif attendance_value.status == 2 %>
         <td class="absent text-center"><%="A" %></td>
         <%elsif attendance_value.status == 3 %>
         <td class="holyday text-center"><%="H" %></td>
         <%elsif attendance_value.status == 4 %>
         <td class="leave text-center"><%= "L" %></td>
         <%elsif attendance_value.status == 5 %>
         <td class="weekend text-center"><%= "WE" %></td>
         <%elsif attendance_value.status == 6 %>
         <td class="compoff text-center"><%= "CO" %></td>
         <% end %>
         <% end %>
         <%= f.hidden_field :attendance_date, value: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s)%>
         <%=f.hidden_field :recruitment_id, value: recruitment.id%>
         <%=f.hidden_field :project_site_id, value: @project_site.id%>
         <% end %>
         <% end %>
      </tr>
      <% end %>
   </tbody>
</table>
<% if @project_site.submission_status == true %>
<div class="text-center">
   <%= link_to "Submit Attendance", set_submission_status_project_site_path(@project_site), method: :put, data: { confirm: 'Make Sure you marked all attendance before submission' }, :class=>"button primary disabled" %>
</div>
<% else %>
<div class="text-center">
   <%= link_to "Submit Attendance", set_submission_status_project_site_path(@project_site), method: :put, data: { confirm: 'Make Sure you marked all attendance before submission' }, :class=>"button primary" %>
</div>
<% end %>


from.html.erb(出席controller查看)

  def set_submission_status
      @project_site = ProjectSite.find(params[:id])
      @project_site.update(submission_status: true)

  end

project_sites_controller.rb

 def set_submission_status @project_site = ProjectSite.find(params[:id]) @project_site.update(submission_status: true) end

有點不清楚您的問題是什么,但我認為這與您發送回數組操作選項的表單有關。

如果您希望 html 表單返回一個信息數組,那么您需要在 html 中使用name = "attendance[]"語法指出它,注意方括號。

查看這篇關於主題https://mattstauffer.com/blog/a-little-trick-for-grouping-fields-in-an-html-form/的文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM