简体   繁体   English

如何在 Rails 中提交时设置多个默认表单值?

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

attendance table that takes has attribute status , date , recuritment_id , and project_site_id . attendance表具有属性statusdaterecuritment_idproject_site_id

project_site has one_to_many association with attendance project_siteattendanceone_to_many关联

recuritment has one_to_many association with attendance . recuritmentattendance有 one_to_many 关联。

i am taking attribute from recruitment table when attribute status is joined in attendance#form view.当属性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| %> here @project_site.attendance_month contains the attendance month value. <% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %>这里@project_site.attendance_month包含出勤月份值。 based on month i calculate number of days column along with name from recuritmnet table.根据月份,我计算天数列以及recuritmnet表中的name

here is view-这是视图-

在此处输入图像描述


holydays master contains corresponding month holyday's date and in view it auto match date and prints "H", Holydays master 包含相应月份的 Holyday 日期,并在视图中自动匹配日期并打印“H”,
All input default selected as P. there is final submission_button that chnages boolean attribute.所有输入默认选择为 P。最终的 submit_button 更改 boolean 属性。 now on final submission i want to push all default selected P into attendance table.现在在最终提交时,我想将所有默认选择的P推送到考勤表中。


attendance_controller.rb 出勤控制器.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 (attendance controller view) 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 project_sites_controller.rb

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

It's a little unclear what your question is, but I gather it has to do with your form sending back an array op options.有点不清楚您的问题是什么,但我认为这与您发送回数组操作选项的表单有关。

If you want your html form to return an array of information, then you need to indicate it in your html using the name = "attendance[]" syntax, notice the square brackets.如果您希望 html 表单返回一个信息数组,那么您需要在 html 中使用name = "attendance[]"语法指出它,注意方括号。

Check out this article on the subject https://mattstauffer.com/blog/a-little-trick-for-grouping-fields-in-an-html-form/查看这篇关于主题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