如何在 rails 中不提交点击而 submit/update 表单?
How to submit/update form without submit click in rails?
生成了一个 recruitment
模型,该模型与 attendance
模型有 one_to_many
关联。现在我想在用户更改出勤下拉列表时 submit/update 表格。这是我的代码-
<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
select。
我试过了-
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], :onchange => 'this.form.submit()' %>
但这不起作用。
我怀疑如果您检查正在生成的 HTML 代码,您将看不到 select 字段的 onchange
属性。
像这样
select
方法在到达 html_options
之前需要一个 options
的散列,所以为了解决这个问题,我们做
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, :onchange => 'this.form.submit()' %>
如果您需要指定任何其他 HTML 选项,例如 class 或样式,您可以这样做
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>
请注意 onchange
和 class
属性周围的大括号。
相关文档:https://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select
生成了一个 recruitment
模型,该模型与 attendance
模型有 one_to_many
关联。现在我想在用户更改出勤下拉列表时 submit/update 表格。这是我的代码-
<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
select。
我试过了-
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], :onchange => 'this.form.submit()' %>
但这不起作用。
我怀疑如果您检查正在生成的 HTML 代码,您将看不到 select 字段的 onchange
属性。
像这样
select
方法在到达 html_options
之前需要一个 options
的散列,所以为了解决这个问题,我们做
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, :onchange => 'this.form.submit()' %>
如果您需要指定任何其他 HTML 选项,例如 class 或样式,您可以这样做
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>
请注意 onchange
和 class
属性周围的大括号。
相关文档:https://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select