产生了一个 recruitment
型号,具有 one_to_many
属于 attendance
现在我想在用户改变考勤下拉菜单时提交更新表单。
<table>
<thead>
<tr>
<th>Name</th>
<% (1..(Time.days_in_month Time.now.strftime("%m").to_i)).each do |date| %>
<th><%= date %></th>
<% end %>
</tr>
</thead>
<tbody>
<% @recruitment.each do |recruitment| %>
<tr>
<td><%= recruitment.name %></td>
<% (1..(Time.days_in_month Time.now.strftime("%m").to_i)).each do |date| %>
<td>
<%= form_for Attendance.new do |f| %>
<div>
<div class="wrapper-class">
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]]%>
</div>
<div>
<%= f.hidden_field :attendance_date, value: (Time.now.strftime("%Y").to_s+"-"+Time.now.strftime("%m").to_s+"-"+date.to_s)%>
</div>
<%=f.hidden_field :recruitment_id, value: recruitment.id%>
</div>
<div>
<%= f.submit 'Submit', :class => 'button primary small float-right' %>
</div>
<% end %>
</td>
<% end %>
我不想点击 submit
每当我改变输入选择的时候,就会打开。
我试过这样
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], :onchange => 'this.form.submit()' %>
但这是行不通的。
我怀疑如果你检查这个生成的HTML代码,你不会看到一个 onchange
属性的选择字段。
该 select
方法期望得到的哈希值是 options
未到 html_options
,所以为了解决这个问题,我们做
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, :onchange => 'this.form.submit()' %>
如果你需要指定其他的HTML选项,如类或样式,你可以这样做。
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>
请注意周围的大括号 onchange
和 class
属性。
相关文档。https:/apidock.comrailsActionViewHelpersFormOptionsHelperselect。