Ruby on rails 如何在rails中提交/更新表单而不提交单击?
生成了一个Ruby on rails 如何在rails中提交/更新表单而不提交单击?,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,生成了一个招聘模型,该模型与考勤模型有一对多关联。现在我想在用户更改考勤下拉列表时提交/更新表单。这是我的密码- <table> <thead> <tr> <th>Name</th> <% (1..(Time.days_in_month Time.now.strftime("%m").to_i)).each do |date| %> <
招聘
模型,该模型与考勤
模型有一对多
关联。现在我想在用户更改考勤下拉列表时提交/更新表单。这是我的密码-
<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 %>
但这不起作用。我怀疑如果您检查生成的HTML代码,您将不会看到select字段的
onchange
属性
像这样
select
方法在到达html\u options
之前需要一个options
散列,所以要解决这个问题,我们需要
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, :onchange => 'this.form.submit()' %>
“this.form.submit()”%>
如果您需要指定任何其他HTML选项,例如类或样式,您可以这样做
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>
注意onchange
和class
属性周围的花括号
相关文档:您是否使用rails ujs?如果是这种情况,您可以在onchange属性中添加类似这样的内容:“Rails.fire(this.form,'submit');”@Smek yes。在这种情况下,您应该能够在onchange属性中用Rails.fire(this.form,'submit')替换this.form.submit()。它将触发与Rails通过Rails ujs提交表单时相同的表单事件。@Smek我在发布代码时尝试过,但没有成功
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>